我正在尝试使用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()编码的答案,但似乎还没有人遇到这个问题
目前没有回答
相关问题 更多 >
编程相关推荐