用美丽的汤处理 xml 的编码错误

我的 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 行,在解码返回 codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError :“charmap”编解码器无法解码位置 5343910 中的字节 0x9d:字符映射到未定义


我的感觉是 Python 想要使用默认的 cp1252 字符集。如何强制使用 utf-8 而不必求助于命令行?(我处于无法轻松强制对 python 设置进行全局更改的设置中)。


慕神8447489
浏览 156回答 1
1回答

蝴蝶不菲

您还应该将编码添加到您的open()调用中(如文档所示,这是一个可接受的参数)。默认情况下,在 Windows 中(至少在我的安装中),如您所料,默认值为 cp1252。from bs4 import BeautifulSoupfd = open("xmlsample.xml", encoding='utf-8')soup = BeautifulSoup(fd,'lxml-xml',from_encoding='utf-8')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python