【问题标题】:Python: parse an XML in Windows-1251 encodingPython:以 Windows-1251 编码解析 XML
【发布时间】:2011-04-27 16:02:57
【问题描述】:

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

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

我收到以下错误:

lxml.etree.XMLSyntaxError: Unsupported encoding windows-1251

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

谢谢

【问题讨论】:

  • 啊,Windows 编码的乐趣
  • 你在什么平台上?这种编码适用于我在 Ubuntu Lucid 上使用 lxml。
  • xml文件是否有xml声明,如果有,它指定了什么编码?

标签: python xml parsing encoding


【解决方案1】:

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

如果是这样,我相信你必须使用编解码器模块的open()函数,并且这样做:

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

我认为得到的content已经从cp1251解码为Unicode;我不确定,我不擅长 Unicode 操作。

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

请注意,即使模式是 'r'codecs.open() 总是以二进制模式打开文件。

希望对你有所帮助

【讨论】:

  • @Alex 请不要多次发布同一个问题。当我看到这个问题时,你已经在另一个问题的答案中回答了这个问题
  • eyquem,是的,我用 codecs.open() 解决了这个问题。很抱歉发布另一个类似的问题,但它完全不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-17
  • 2020-12-09
  • 1970-01-01
  • 2021-04-30
  • 2014-10-12
  • 1970-01-01
  • 2018-06-01
相关资源
最近更新 更多