2014-10-01 122 views
1

我有6条相同的线(测试文件可以下载here)制表符分隔的文件:csv.reader解析文件错误

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问题?

回答

3

则应禁用引用,它会工作:

len(list(csv.reader(open('test.txt', 'rb'), delimiter='\t', quoting=csv.QUOTE_NONE))) 

将返回

这里的问题是,CSV解析器需要换行字符\n作为该领域的一部分,因为你有kfijld前的默认报价"