Подтвердить что ты не робот

Прочитать текстовый файл с не-ASCII-символами в неизвестной кодировке

Я хочу прочитать файл, который содержит также немецкий, а не только символы. Я обнаружил, что могу это сделать

  >>> import codecs
  >>> file = codecs.open('file.txt','r', encoding='UTF-8')
  >>> lines= file.readlines()

Это работает, когда я пытаюсь запустить свою работу в Python IDLE, но когда я пытаюсь запустить ее из другого места, это не дает правильного результата. Есть идея?

4b9b3361

Ответ 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.