2014-10-01 3 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 

Почему это происходит?

EDIT: Дальнейшие испытания показывают, что анализируются только четные линии (первая, третья и пятая). Может быть, проблема EOL?

ответ

3

Вы должны отключить цитирование и он будет работать:

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

вернется

Проблема здесь состоит в том, что CSV анализатор принимает символ новой строки \n как часть поля, потому что у вас есть котировки по умолчанию " в каждой строке до kfijld

Смежные вопросы