Читатель Python UTF-16 CSV
У меня есть файл UTF-16 CSV, который я должен прочитать. Модуль Python CSV, похоже, не поддерживает UTF-16.
Я использую Python 2.7.2. Файлы CSV, которые мне нужно проанализировать, имеют огромный размер и занимают несколько ГБ данных.
Ответы на вопросы Джона Мачина ниже
print repr(open('test.csv', 'rb').read(100))
Вывод с test.csv, имеющим только abc в качестве содержимого
'\xff\xfea\x00b\x00c\x00'
Я думаю, что CSV-файл был создан на машине Windows в США. Я использую Mac OSX Lion.
Если я использую код, предоставленный phihag и test.csv, содержащий одну запись.
Пример содержимого test.csv. Ниже приведен вывод print repr (open ('test.csv', 'rb'). Read (1000))
'\xff\xfe1\x00,\x002\x00,\x00G\x00,\x00S\x00,\x00H\x00 \x00f\x00\xfc\x00r\x00 \x00e\x00 \x00\x96\x00 \x00m\x00 \x00\x85\x00,\x00,\x00I\x00\r\x00\n\x00'
Код по phihag
import codecs
import csv
with open('test.csv','rb') as f:
sr = codecs.StreamRecoder(f,codecs.getencoder('utf-8'),codecs.getdecoder('utf-8'),codecs.getreader('utf-16'),codecs.getwriter('utf-16'))
for row in csv.reader(sr):
print row
Вывод вышеуказанного кода
['1', '2', 'G', 'S', 'H f\xc3\xbcr e \xc2\x96 m \xc2\x85']
['', '', 'I']
ожидаемый результат
['1', '2', 'G', 'S', 'H f\xc3\xbcr e \xc2\x96 m \xc2\x85','','I']