我有一个带有6个相同行的制表符分隔文件(可以下载测试文件here):
2635243 Uckfield Uckfield "kfijld,Ъкфийлд 50.96948 0.09589 P PPL GB ENG E2 21UH 15716 19 Europe/London 2010-05-24
2635243 Uckfield Uckfield "kfijld,Ъкфийлд 50.96948 0.09589 P PPL GB ENG E2 21UH 15716 19 Europe/London 2010-05-24
2635243 Uckfield Uckfield "kfijld,Ъкфийлд 50.96948 0.09589 P PPL GB ENG E2 21UH 15716 19 Europe/London 2010-05-24
2635243 Uckfield Uckfield "kfijld,Ъкфийлд 50.96948 0.09589 P PPL GB ENG E2 21UH 15716 19 Europe/London 2010-05-24
2635243 Uckfield Uckfield "kfijld,Ъкфийлд 50.96948 0.09589 P PPL GB ENG E2 21UH 15716 19 Europe/London 2010-05-24
2635243 Uckfield Uckfield "kfijld,Ъкфийлд 50.96948 0.09589 P PPL GB ENG E2 21UH 15716 19 Europe/London 2010-05-24
当我尝试用csv.reader读取它们时,我只能正确解析3行:
>>> import csv
>>> len(list(csv.reader(open('test.txt', 'rb'), delimiter='\t')))
3
为什么会这样?
编辑:进一步测试表明只解析偶数行(第一,第三和第五)。可能是一些EOL问题?
答案 0 :(得分:3)
你应该禁用引用,它会起作用:
len(list(csv.reader(open('test.txt', 'rb'), delimiter='\t', quoting=csv.QUOTE_NONE)))
将返回 6
此处的问题是,CSV解析器会将新行字符\n
作为字段的一部分,因为在"
之前的每一行中都有默认引号kfijld