我有一个超过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)并写入文本文件,但只是我的文件的一小部分。我无法理解我应该怎么做,因为没有错误。
我该怎么做才能避免无效字符并解析我的文件?请指出我处理这个问题的方向。