You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中增量解析超大XML文件并提取完整文本

处理超大XML文件时增量提取完整文本的问题

问题背景

我有一些超过6GB的超大XML文件,需要从中提取文本。问题在于文本被其他标签打断,示例文件如下:

<doc>
    <s> Here you can see a <ref target="SOME_URL" targOrder="u">reference</ref> in the text. </s>
</doc>

我期望得到的结果是:

Here you can see a reference in the text.

当前尝试的代码及问题

我使用增量解析的方式处理,但只能提取到被标签打断前的部分文本:

import xml.etree.ElementTree as ET
for event, element in ET.iterparse(path):
    if element.tag == "doc":
        # do something here            
    elif element.tag == "s" and type(element.text) == str:
        if element.text.strip():
            # again do something here

    element.clear()

应用到示例文件后得到的结果是:

Here you can see a

我知道使用itertext()可以获取完整文本,比如:

import xml.etree.ElementTree as ET
myxml = '<doc><s> Here you can see a <ref target="SOME_URL" targOrder="u">reference</ref> in the text. </s></doc>'
tree = ET.fromstring(myxml)
print(''.join(tree.itertext()))

输出:

Here you can see a reference in the text.

但由于文件过大,无法一次性解析为树结构。而增量解析时,解析到<s>标签时,后续的<ref>标签还未被解析,导致itertext()无法正常工作。

编辑补充:尝试后的问题

尝试第一个答案后,文本仍会被标签打断(和之前一样),参考代码如下:

for event, element in ET.iterparse(path):
    if element.tag == "idsText":
        # move sentences from stack
        if sents:
            cat_texts.extend(sents)
            visited[current_doc] = visited.get(current_doc, 0) + 1
            # another function call
            annotate(cat_texts, filename, current_doc, visited[current_doc])
            # reset cat_texts
            cat_texts = []
        # set new current document's name
        current_doc = element.get("n")
        sents = []
    # new sentence starts
    elif element.tag == "s" and type(element.text) == str:
        if element.text.strip():
            sentence = ' '.join(element.itertext())
            new_sent.extend(nltk.word_tokenize(sentence, language='german'))
            sents.append(new_sent)
            new_sent = []

    element.clear()

提问

请问有没有办法在增量解析时提取元素内的完整文本并去除标签?

内容的提问来源于stack exchange,提问作者user21871257

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 19:05:25