如何在Python-3.x中解码文件?

时间:2013-04-21 12:06:50

标签: python xml python-3.x decoding

对于我的项目,我需要解析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。 任何帮助都很好, 谢谢你。

1 个答案:

答案 0 :(得分:4)

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

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

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

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