1

我正在尝试使用 LXML 解析 ~200MB XML 文件。我愚蠢地做etree.parse(xml_path),没有任何encoding参数作为参数,然后使用iterwalk()迭代一些子节点,认为它会降低内存消耗。它奏效了,我可以解析整个 XML 文件,尽管速度很慢。然后我意识到在做etree.parse(xml_path)时,整个文件被加载到内存中,所以做iterparse()iterwalk()之后没有意义。

所以现在,我试图直接etree.iterparse(xml_path)在同一个文件上做,但我得到了

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 5123: invalid start byte

我尝试同时使用encoding='utf-8'encoding='ISO-8859-1'作为参数,iterparse()但错误仍然存​​在。我的 XML 文件指出编码是'ISO-8859-1'.

TL;DR: etree.parse()工作但etree.iterparse()由于编码错误而失败。我浏览了有关 iterparse() 编码的所有 SO 答案,但似乎还没有人遇到过这个问题。

4

0 回答 0