首页 > 解决方案 > 删除 XML 文件开头的 BOM 标记

问题描述

我有一个 XML 文件,我试图从中删除一个 BOM,因为我需要使用 lxml 解析它。可以在此处找到该文件的链接。一些简化的代码是:

from lxml import etree

f = open(filename, "r")
ff = f.read()
fff = ff.encode('utf-8-sig')
ffff = fff.decode('utf-8')

tree = etree.fromstring(ffff)

我尝试按照此处的一些示例来处理此类实例,但是我仍然遇到与开始时相同的错误:

lxml.etree.XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1

我做错了什么?

谢谢

标签: python-3.xlxml

解决方案


您当前的代码正在向后进行编码和解码,最终以双倍的 BOM 而不是根本没有。您想使用常规编码utf-8,并使用解码utf-8-sig

但是您可以通过直接从文件中进行解码来避免所有这些。尝试:

f = open(filename, "r", encoding="utf-8-sig")
ff = f.read()

tree = etree.fromstring(ff)

推荐阅读