如何从Excel工作表的单元格中删除或忽略控制字符\ r或“”?

时间:2019-02-14 17:41:11

标签: python python-2.7 comparison

我正在读取一个csv文件数据并将其转换为字典,但是字典中的数据带有\ r,例如69 \ r,腻子为79 \ r,或者当我打开文件时,它将变为“ 69”,这些双引号是隐藏的。如何删除这些?

我尝试了多种方法来解决堆栈溢出问题,但没有解决。我尝试了read.splitLines()或replace方法,但是问题是如果我删除\ r,它将删除第一行之后的所有数据,但是excel中有很多数据。

还有其他方法可以忽略控制字符并以excel或腻子的形式获取所有数据。请帮忙!!!!!

下面是代码:

def fileToDict(filepath):
    dataInDict = {}
    with open(filepath) as f:
        data = f.readlines()
        for idx, d in enumerate(data):
            dlist = d.strip('\n').split('\t')
            dataInDict[idx] = dlist
        f.close()
    return dataInDict 

在此处添加更多详细信息...我正在使用此功能使用like将所有数据从2个文件转换为2个字典

Dict1 =  fileToDict(file1)  
Dict2 =  fileToDict(file2) 

现在,当我比较两个字典之间的数据并使用上面的函数打印dataInDict时,它将为我输出来自两个字典的数据,如下所示。我已经突出显示\ r值,而没有\ r值。 enter image description here

但是当我尝试从中删除\ r时,它只给我第一行,而不是所有行。由于这个\ r,比较失败

我正在使用xlsWriter将上述输出写入excel工作表

1 个答案:

答案 0 :(得分:1)

有两种解决方法。

您可以在for循环中使用.strip方法。

假设您具有以下代码:

mydict = {'one': '69\r', 'two': '79\r'}

您可以遍历它,并将每个键中的每个值替换为其自身的剥离版本:

for i in mydict:
    mydict[i] = mydict[i].strip('\r')

输出:

{'one': '69', 'two': '79'}

编辑

由于作者添加了代码段:

def fileToDict(filepath):
    dataInDict = {}
    with open(filepath) as f:
        data = f.readlines()
        for idx, d in enumerate(data):
            dlist = d.strip('\n').split('\t')
            dataInDict[idx] = dlist
        f.close()
    for i in dataInDict:                           # Iterate through your new dict
        dataInDict[i] = dataInDict[i].strip('\r')  # Strip each value after occurance of '\r'
    return dataInDict