Python:解析 Windows-1251 编码的 XML

标签 python xml parsing encoding

当我尝试像这样使用 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/

相关文章:

python - 使用nosetests 特别命名的目录

python - 如何获得 pandas 系列中最接近零值的 n 个值?

xml - 在 Maven POM 文件中转义开发人员姓名变音符号?

parsing - 解析树、注释解析树和激活树有什么区别?(编译器)

python - FeinCMS 只允许每个页面对象使用一次内容类型

python - 类型错误 : Can't convert 'bytes' object to str implicitly - Python

java - 带时间间隔的动态按钮

xml - 使用 xslt 根据来自不同 xml 的子节点比较两个节点

java - Java 中 eval() 解析器和二维数组的实现

json - 在 Swift 3 中正确解析 JSON