обработка ошибки кодирования с XML с красивым супом - PullRequest
0 голосов
/ 22 февраля 2019

Мой XML-файл кодируется таким образом:

<?xml version="1.0" encoding="utf-8"?>

Я пытаюсь проанализировать этот файл, используя красивый суп.

from bs4 import BeautifulSoup

fd = open("xmlsample.xml")  
soup = BeautifulSoup(fd,'lxml-xml',from_encoding='utf-8')

Но это приводит к

Traceback (most recent call last):
  File "C:\Users\gregg_000\Desktop\Python 
Experiments\NRE_XMLtoCSV\NRE_XMLtoCSV\bs1.py", line 4, in <module>
    soup = BeautifulSoup(fd,'lxml-xml', from_encoding='utf-8')
  File 
"C:\Users\gregg_000\AppData\Local\Programs\Python\Python36\lib\site- 

пакетов \ bs4__init __. Py ", строка 245, в init markup = markup.read () Файл

" C: \ Users \ gregg_000 \ AppData \ Local \ Programs\ Python \ Python36 \ lib \ encodings \ cp125 2.py ", строка 23, in decode return codecs.charmap_decode (input, self.errors, decoding_table) [0] UnicodeDecodeError: кодек 'charmap' не может декодировать байт 0x9d в позиции5343910: сопоставление символов с неопределенным

Мне кажется, что Python хочет использовать набор символов cp1252 по умолчанию. Как я могу форсировать utf-8, не прибегая к командной строке?в настройке, где я не могу легко заставить глобальные изменения в настройке Python).

1 Ответ

0 голосов
/ 22 февраля 2019

Вы также должны добавить кодировку к вашему вызову open() (это приемлемый аргумент, как указано в документах ).По умолчанию в Windows (по крайней мере, в моей установке) по умолчанию, как вы уже догадались, cp1252.

from bs4 import BeautifulSoup

fd = open("xmlsample.xml", encoding='utf-8')
soup = BeautifulSoup(fd,'lxml-xml',from_encoding='utf-8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...