解析包含无效字符的大型XML文件

时间:2017-11-24 16:37:30

标签: python xml beautifulsoup elementtree

我有一个超过1 GB的大型XML文件。我想从中提取文本并写入文本文件。问题是该文件包含一些无效字符,如'&' (我甚至不需要写它们,我可以完全删除)。首先,我使用ElementTree来解析文件,如下所示:

xml.etree.ElementTree.ParseError: not well-formed (invalid token)

但是,它在这一行上给出了for event, elem in context:错误:recover=True这是因为&字符。在进入for循环之前,我找不到一种方法来转义无效字符。我尝试使用带有from bs4 import BeautifulSoup from bs4 import SoupStrainer newFile = open('using_bs4.xml', 'w', encoding="utf-8") def only_s_and_q_tags(): return "s" or "q" s_and_q_tags = SoupStrainer(only_s_and_q_tags()) with open("newscor.xml", encoding="utf-8") as fp: soup = BeautifulSoup(fp, "xml", parse_only=s_and_q_tags) for string in soup.strings: if string not in ['\n', '\r\n']: print(repr(string)) newFile.write(string) 参数的lxml,但它没有带有此选项的 iterparse()函数。

然后,我使用BeautifulSoup来解析我的文件,如下所示:

{{1}}

这没有给我任何错误,(退出代码0)并写入文本文件,但只是我的文件的一小部分。我无法理解我应该怎么做,因为没有错误。

我该怎么做才能避免无效字符并解析我的文件?请指出我处理这个问题的方向。

0 个答案:

没有答案