Прочитать текстовый файл с не-ASCII-символами в неизвестной кодировке
Я хочу прочитать файл, который содержит также немецкий, а не только символы. Я обнаружил, что могу это сделать
>>> import codecs
>>> file = codecs.open('file.txt','r', encoding='UTF-8')
>>> lines= file.readlines()
Это работает, когда я пытаюсь запустить свою работу в Python IDLE, но когда я пытаюсь запустить ее из другого места, это не дает правильного результата. Есть идея?
Ответы
Ответ 1
Вам нужно знать, какой символ кодирует текст в кодировке. Если вы не знаете этого заранее, вы можете попытаться угадать его с помощью chardet. Сначала установите его:
$ pip install chardet
Затем, например, чтение файла в двоичном режиме:
>>> import chardet
>>> chardet.detect(open("file.txt", "rb").read())
{'confidence': 0.9690625, 'encoding': 'utf-8'}
Итак, тогда:
>>> import unicodedata
>>> lines = codecs.open('file.txt', 'r', encoding='utf-8').readlines()
Ответ 2
Я считаю, что файл читается правильно, но при выводе используется неправильная кодировка. Это основано на том, что вы получили правильные результаты в IDLE.
Я бы попробовал использовать print(line.encode('utf-8'))
, но я боюсь, что не знаю, правильно ли напечатает Python 3 объект bytes
.