1

对于我的项目,我需要解析 xml 文件。为此,我使用 lxml。我需要解析的文件有一个 cp1251 编码,但是,当然,为了使用 lxml 解析它,我需要将它解码为 utf-8,我不知道该怎么做。我试图对此进行搜索,但所有解决方案都适用于 Python 2.7 或不起作用。如果尝试写类似的东西

inp = open("business.xml", "r", encoding='cp1251').decode('utf-8')

或者

inp.decode('utf-8')

它得到

builtins.AttributeError: '_io.TextIOWrapper' object has no attribute 'decode'

我有 Python 3.2。任何帮助都很好,谢谢。

4

1 回答 1

4

open()为您解码文件。您已经收到 Unicode 数据。

因为lxml您需要以二进制模式打开文件,并让 XML 解析器处理编码。不要自己这样做。

with open("business.xml", "rb") as inp:
    tree = etree.parse(inp)

XML 文件包含一个标头以指示它们使用的编码,并且解析器会对此进行调整。如果缺少标头,解析器可以安全地假定 UTF-8。

于 2013-04-21T12:08:04.300 回答