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

Я имею дело с некоторыми проблемами в нескольких файлах о кодировке. Мы получаем файлы от другой компании и должны их читать (файлы находятся в формате 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 
  • AttributeError: экземпляр FileInput не имеет атрибута '__exit__'
  • Элегантный Python?
  • Отдельные разделы в Python
  • Получение местоположения на карте Python
  • Разделите строку с неизвестным количеством пробелов в качестве разделителя в Python
  • Есть что-то вроде `ForeignKey` в Google App Engine` webapp`?
  • Python: время жизни (область памяти) локальных переменных внутри функции
  • Как изменить порядок списка?
  •  
    Interesting Posts for Van-Lav

    Невозможно очистить текст от определенного элемента LI

    Как сохранить пароль пользователя для стороннего сервиса в Python?

    Как оптимизировать этот код на искру?

    Активируйте виртуальную виртуальную машину по умолчанию при запуске терминала (используя bashrc)

    .NET Regex Неопознанная структура группировки

    Django в Google AppEngine с CloudSQL: как подключиться к базе данных (ошибка 2002, не удается подключиться к локальному серверу MySQL ..)

    вызовите python с помощью system () в R, чтобы запустить скрипт python, эмулирующий консоль python

    Невозможно создать новые потоки в Python

    Ошибка Kivi: Ошибка атрибута: объект «Нет типа» не имеет атрибута «текст»

    DataFrame.apply в python pandas изменяет как исходные, так и повторяющиеся DataFrames

    Ошибка WSDI Python при выходе

    Pyodbc – печатать первые 10 строк (python)

    Захват исключений в шаблонах django

    Кэширование urlib Python

    Виртуальные классы: делать это правильно?

    Python - лучший язык программирования в мире.