Python:以Windows-1251编码解析XML

Ale*_*lex 5 python xml encoding parsing

当我尝试使用lxml解析XML时,如下所示:

tree = etree.parse('xml.xml')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

lxml.etree.XMLSyntaxError: Unsupported encoding windows-1251
Run Code Online (Sandbox Code Playgroud)

如何使用这种编码从XML读取数据?

谢谢

eyq*_*uem 5

我认为您使用的是Python 2.x版本。

如果是这样,我相信您必须使用编解码器模块的open()函数,并执行以下操作:

import codecs
with codecs.open(filename,'rb','cp1251') as f:
    content = f.read()
    tree = etree.parse(content)
Run Code Online (Sandbox Code Playgroud)

我认为获得的内容已从cp1251解码为Unicode;我不确定,我不擅长Unicode操作。

如果是这样,我想在阅读之后,etree必须能够解析Unicode中的字符串才能继续。但我也知道etree

请注意,即使mode为'r'codecs.open()也始终以二进制模式打开文件。

希望会有所帮助