Python:解析Windows-1251编码的XML

6 投票
1 回答
3578 浏览
提问于 2025-04-16 16:31

当我尝试用lxml来解析XML时,像这样:

tree = etree.parse('xml.xml')

我遇到了以下错误:

lxml.etree.XMLSyntaxError: Unsupported encoding windows-1251

我该如何读取这种编码的XML数据呢?

谢谢

1 个回答

5

我觉得你可能在用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()打开文件时总是以二进制模式进行。

希望这能帮到你。

撰写回答