Я пытаюсь прочитать файл CSV с помощью Python со следующим кодом:
with open("example.txt") as f:
c = csv.reader(f)
for row in c:
print row
Мой example.txt
имеет только следующее содержимое:
Hello world!
Для файлов в кодировке UTF-8 или ANSI это дает мне ожидаемый результат:
> ["Hello world!"]
Но если я сохраню файл как UTF-8 со спецификацией, я получу следующий вывод:
> ["\xef\xbb\xbfHello world!"]
Поскольку у меня нет никакого контроля над тем, какие файлы пользователь будет использовать в качестве входных данных, я хотел бы, чтобы это работало и со спецификацией. Как я могу решить эту проблему? Есть ли что-то, что мне нужно сделать, чтобы убедиться, что это работает и для других кодировок?
utf-8-sig
для декодирования. - person ekhumoro   schedule 18.11.2015import csv,csvkit,codecs,unicodecsv with open("example.txt",'r') as f: c = csv.reader(f) for row in c: print [unicode(s, "utf-8") for s in row] with open("example.txt",'r') as f: c = unicodecsv.reader(f) for row in c: print row with open("example.txt",'r') as f: c = csvkit.reader(f) for row in c: print row
все печатает[u'\ufeffHello world!']
, поэтому я думаю, что это не дубликат - первая попытка использует stackoverflow.com/questions/17245415/ - person SIslam   schedule 18.11.2015utf-8-sig
; но некоторые другие ответы этого не делают, поэтому я добавил здесь комментарий. - person ekhumoro   schedule 18.11.2015