Проблемы кодирования при чтении файлов .htm с Python - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь прочитать большой набор .htm файлов с помощью Python.Для этого я использую следующее:

HtmlFile = codecs.open(file, 'r')
text = BeautifulSoup(HtmlFile.read()).text

Однако это приводит к следующей ошибке:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 411: 
character maps to <undefined>

Итак, я попытался кодировать с помощью utf-8, например так:

HtmlFile = codecs.open(file, 'r', encoding='utf-8')
text = BeautifulSoup(HtmlFile.read()).text

А потом я получил эту ошибку:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 4565: 
invalid start byte

Я пытался следовать совету здесь , но это не помогало.Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 18 декабря 2018

Я провел небольшое исследование, и это проблема сгенерированного Microsoft файла с использованием кодировки CP1252, однако есть некоторые вещи, которые не подобраны правильно.Учитывая следующее:

<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=Generator content="Microsoft Word 15 (filtered)">

в вашем html-файле это кажется более чем вероятным.

Согласно этому ответу , если вы используете кодировку Latin-1 для этого примераэто может помочь:

HtmlFile = codecs.open(file, 'r', encoding='latin-1')
text = BeautifulSoup(HtmlFile.read()).text

Дайте мне знать, если это работает.Помните, что в Latin-1 нет всех символов, которые есть в кодировках Microsoft.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...