提问人:Ambitiouscoder 提问时间:3/31/2023 最后编辑:Mark TolonenAmbitiouscoder 更新时间:3/31/2023 访问量:193
lxml.etree.XMLSyntaxError:输入不正确的UTF-8,指示编码?
lxml.etree.XMLSyntaxError: Input is not proper UTF-8, indicate encoding?
问:
我有一个包含 200 万个观测值的 xml 文件,我想将其转换为 csv,但我收到以下错误。
File "src\lxml\parser.pxi", line 609, in lxml.etree._ParserContext._handleParseResult
File "src\lxml\parser.pxi", line 618, in lxml.etree._ParserContext._handleParseResultDoc
File "src\lxml\parser.pxi", line 728, in lxml.etree._handleParseResult
File "src\lxml\parser.pxi", line 657, in lxml.etree._raiseParseError
File "input/stackoverflow.com/Posts.xml", line 9 lxml.etree.XML
SyntaxError: Input is not proper UTF-8, indicate encoding ! Bytes: 0xFC 0x74 0xFC 0x70, line 9, column 360
我已经包含了 encoding= “utf-8”,但我不确定这个错误的来源是什么。谁能帮忙?
我也尝试了下面的代码,它给了我类似的编码错误。
from lxml import etree
parser = etree.XMLParser(recover=True)
etree.fromstring(filename, parser=parser)
error: xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 9, column 359
答:
0赞
Ambitiouscoder
3/31/2023
#1
我能够通过添加 encoding= 'latin1' 来消除该错误并稍微更改我的代码。
context = etree.iterparse(sourcefilename, events=('end',), tag='row',encoding= "latin1"
但是,我面临着另一个问题
lxml.etree.XMLSyntaxError:xmlParseEntityRef:无名称,第 26451 行,第 2887 列
显然是因为有一些无效的字符,我不知道我应该如何替换它们。
评论
0赞
Mark Tolonen
3/31/2023
请注意,编码永远不会失败,因为 Unicode 代码点分配给每个可能的单个字节 (0-255)。如果文件编码不是 ,它仍然会分配错误的代码点。如果没有看到文件,我们无法为您提供更好的选择。latin1
latin1
评论