2016-01-19 2 views
0

Анализ вывода csv команды консоли с Python 2.7. Стандартный модуль csv не работал должным образом, поэтому я нашел unicodecsv модуль. итерация выводит странные результаты (пустые списки или строки, разделенные на голец), но я ожидаю увидеть список со значениями для каждой строки:Анализ уникода csv с модулем unicodecsv

import unicodecsv 
csv_parsed = unicodecsv.reader(utf8_csv_string, delimiter=',') 

for row in csv_parsed: 
    print row 

>[u'0'] 
>[] 
>[u''] 
>[u'', u''] 
>[u'', u''] 
>[u'', u''] 
>[u'19102.00'] 
>[u'', u''] 
>[u'2'] 
>[u'1'] 
>[u'2'] 
>[u'', u''] 
>[u'0'] 
>[] 

Где ошибка?

PS: Использование Python 3 - это не вариант.

+1

Как выглядят ваши исходные данные? – John

+0

'' поле1 "," поле2 "," поле3 "," поле4 "," поле5 ", \ n' 100% действительны. Разбор его с PHP работает правильно. – asyndrige

+2

Я думаю, что функция читателя ожидает дескриптор файла, а не строку. Вы можете использовать StringIO для перебора строки – Niemerds

ответ

1

В соответствии с документацией unicodecsv ожидает побочный эффект. Таким образом,

with open('file.txt', 'rb') as f: 
    data = unicodecsv.reader(f, delimiter=',') 

должно работать. Фактически, если вы посмотрите на tests on github, вы можете видеть, как это использует автор библиотеки.

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