当我尝试像这样使用 lxml 解析 XML 时:
tree = etree.parse('xml.xml')
我收到以下错误:
lxml.etree.XMLSyntaxError: Unsupported encoding windows-1251
如何使用这种编码从 XML 中读取数据?
谢谢
最佳答案
我认为您使用的是 Python 2.x 版本。
如果是这样,我相信你必须使用 codecs 模块的 open() 函数,并执行:
import codecs
with codecs.open(filename,'rb','cp1251') as f:
content = f.read()
tree = etree.parse(content)
我认为获取的内容已经从cp1251解码为Unicode;我不确定,我不擅长 Unicode 操作。
如果是这样,我想在读取之后,etree 必须能够解析 Unicode 中的字符串才能继续。但我对 etree 也有一点了解。
请注意,即使模式为 'r',codecs.open() 也始终以二进制模式打开文件。
希望对你有帮助
关于Python:解析 Windows-1251 编码的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5807103/