对于我的项目,我需要解析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。 任何帮助都很好, 谢谢你。
答案 0 :(得分:4)
open()
为您解码文件 。您已收到Unicode数据。
对于lxml
,您需要以二进制模式打开文件,并让XML解析器处理编码。不要自己这样做。
with open("business.xml", "rb") as inp:
tree = etree.parse(inp)
XML文件包含一个标头,用于指示它们使用的编码,并且解析器会对其进行调整。如果缺少标头,解析器可以安全地假设为UTF-8。