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

Обнаружение символов в текстовом файле в Python с использованием универсального детектора кодирования (chardet)

Я пытаюсь использовать универсальный детектор кодирования (chardet) в Python для обнаружения наиболее вероятной кодировки символов в текстовом файле ( "infile" ) и использовать его для дальнейшей обработки.

Хотя chardet предназначен в первую очередь для обнаружения кодировки символов веб-страниц, я нашел пример, который используется в отдельных текстовых файлах.

Однако я не могу понять, как сообщить script установить наиболее вероятную кодировку символов в переменную 'charenc' (которая используется несколько раз в течение script).

Мой код, основанный на комбинации вышеупомянутого примера и чарта, документации выглядит следующим образом:

import chardet    
rawdata=open(infile,"r").read()
chardet.detect(rawdata)

При использовании script требуется распознавание символов, чтобы запустить следующее (а также несколько аналогичных применений):

inF=open(infile,"rb")
s=unicode(inF.read(),charenc)
inF.close()

Любая помощь будет принята с благодарностью.

4b9b3361

Ответ 1

chardet.detect() возвращает словарь, который обеспечивает кодировку как значение, связанное с ключом 'encoding'. Итак, вы можете сделать это:

import chardet    
rawdata = open(infile, 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']

Документация chardet явно не ясна о том, должны ли текстовые строки и/или байтовые строки работать с модулем, но это что если у вас есть текстовая строка, вам не нужно запускать обнаружение символов на ней, поэтому вам, вероятно, следует передавать строки байтов. Следовательно, флаг двоичного режима (b) в вызове open(). Но chardet.detect() может также работать с текстовой строкой в ​​зависимости от того, какие версии Python и библиотеки вы используете, т.е. если вы опускаете b, вы можете обнаружить, что она работает в любом случае, даже если вы технически делаете что-то неправильно.