【发布时间】:2017-06-21 00:51:20
【问题描述】:
这是我的问题。我需要解析一个逗号分隔的文件,并且我的代码可以按照我的意愿运行,但是在测试它并尝试破坏时我遇到了一个问题。
示例代码如下:
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 长度的空值(逗号)。 以下是文件内容的示例:
,,"sometext",343434
,,"moretext",343434
,,"stuff",4543343
,,"morestuff",3434354
如果该行缺少一个项目,该代码可以正常工作。所以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 在“问题”文件中的格式不正确...
标签: python python-2.7 csv parsing