这是我的问题。我需要解析一个逗号分隔的文件,我已经让我的代码按照我想要的方式工作,然而,当我测试它并试图破坏一些东西时,我遇到了一个问题。在
下面是示例代码:
import csv
compareList=["testfield1","testfield2","testfield3","testfield4"]
z=open("testFile",'r')
x=csv.reader(z,quotechar='\'')
testDic={}
iter=0
for lineList in x:
try:
for item in compareList:
testDic[item]=lineList[iter]
iter+=1
iter=0
except IndexError:
iter=0
lineList=[]
for item in compareList:
testList.append("")
testDic[item]=lineList[iter]
iter+=1
iter=0
for item in compareList:
testFile.write(testDic[item])
if compareList.index(item)!=len(compareList)-1
testFile.write(",")
testFile.write('\n')
testFile.close()
z.close()
所以这应该做的是检查并确保csv文件的每一行都与列表的长度匹配。如果行的长度与列表的长度不匹配,则该行将转换为等于compareList长度的空值(逗号)。 以下是文件中的示例:
^{pr2}$如果行中缺少一个项,代码就可以正常工作。因此at文件的输出包含:
,"sometext",343434
,,"moretext",343434
,,"stuff",4543343
,,"morestuff",3434354
看起来像这样:
,,,,
,,"moretext",343434
,,"stuff",4543343
,,"morestuff",3434354
我归纳出的问题是当线条看起来像这样:
,"sometext",343434
,,"moretext",343434
,,"St,'",uff",4543343
,,"morestuff",3434354
此文件的输出将是:
,,,,
,,"moretext",343434
,,,,
因此,它将按预期应用更改并清空第1行和第3行,但它只是在该行停止处理。我一直在想办法弄清楚这里到底发生了什么事,但运气不好。在
一如既往,我非常感谢你愿意给予的任何帮助。在
只需打印csv.reader要了解问题所在:
最后2行只是一行csv.reader. 现在,只需删除
^{pr2}$quotechar='\''
相关问题 更多 >
编程相关推荐