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

Я имею дело с некоторыми проблемами в нескольких файлах о кодировке. Мы получаем файлы от другой компании и должны их читать (файлы находятся в формате 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 
  • ValueError: требуется больше, чем 2 значения для распаковки в Python 2.6.6
  • один-ко-многим GQL-запрос и помещение результатов в словарь
  • Google App Engine - непомерно медленное и дорогостоящее резервное копирование и восстановление?
  • Усечение таблицы BigQuery перед потоковой обработкой не работает
  • Как я могу использовать скрипт в подпапках на gae?
  • Явное объявление переменной как неиспользуемой в Python / PyCharm
  • Обфускация кода Python?
  • решения для решения питона для неизвестной переменной
  • API Facebook и Python
  • Когда использовать класс против dict в python?
  • Как заставить Python получить имя пользователя в Windows, а затем реализовать его в скрипте
  • Python - лучший язык программирования в мире.