我正在读取一个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工作表
答案 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