Автоматически открывать файл в правильной кодировке

Я имею дело с некоторыми проблемами в нескольких файлах о кодировке. Мы получаем файлы от другой компании и должны их читать (файлы находятся в формате csv)

Как ни странно, файлы, как представляется, кодируются в UTF-16. Я могу это сделать, но я должен открыть их, используя модуль codecs и указав кодировку, таким образом.

 ENCODING = 'utf-16' with codecs.open(test_file, encoding=ENCODING) as csv_file: # Autodetect dialect dialect = csv.Sniffer().sniff(descriptor.read(1024)) descriptor.seek(0) input_file = csv.reader(descriptor, dialect=dialect) for line in input_file: do_funny_things() 

Но, так же, как я могу получить диалект более агрессивным способом, я думаю, будет здорово иметь возможность автоматически открывать файлы с его надлежащей кодировкой, по крайней мере, все текстовые файлы. Существуют и другие программы, такие как vim, которые достигают этого.

Кто-нибудь знает способ сделать это в python 2.6?

PD: Я надеюсь, что это будет разрешено в Python 3, так как все строки Unicode …

4 Solutions collect form web for “Автоматически открывать файл в правильной кодировке”

чарт может вам помочь.

Автокодирование кодировки символов в Python 2 и 3. Такой умный, как ваш браузер. Открытый исходный код.

Это не будет «исправлено» в python 3, так как это не проблема с исправлением. Многие документы действительны в нескольких кодировках, поэтому единственный способ определить правильное кодирование – это знать что-то о документе. К счастью, в большинстве случаев мы знаем что-то о документе, как, например, большинство символов будут группироваться в отдельные блоки юникода. Документ на английском языке в основном содержит символы в первых 128 кодовых точках. Документ на русском языке будет содержать в основном кириллические коды. Большинство документов будут содержать пробелы и новые строки. Эти подсказки могут быть использованы, чтобы помочь вам получить обоснованные догадки о том, какие кодировки используются. Еще лучше, используйте библиотеку, написанную кем-то, кто уже выполнил эту работу. (Как chardet , упомянутый в другом ответе Десинтегра .

csv.reader не может обрабатывать строки Unicode в 2.x. См. Нижнюю часть документации csv и этот вопрос для способов ее устранения.

Если он будет исправлен в Python 3, его также следует исправить, используя

 from __future__ import unicode_literals 
  • начальные значения для класса, python
  • AppIdentityError: неправильный получатель при проверке токена
  • Выполнение действия при неожиданном выходе python
  • Скрипт Python для циклического перемещения всех файлов в каталоге, удалите все, размер которых меньше 200 КБ
  • Логический аргумент для скрипта
  • Почему в Python отсутствует явная проверка пустоты (например, `is Empty`)
  • Определение, является ли строка палиндром - Python
  • Проверьте входные данные, принадлежащие номерам Фибоначчи, в Python
  • Python - лучший язык программирования в мире.