0

我正在使用 Python 解析一个大型 XML 文件并停留在删除元素的条件下。我已经像另一个人一样检查了逻辑,但是无论出于何种原因它仍然无法正常工作。本质上,我正在尝试删除非英语的非首选术语,因为我们的系统中不需要它们。所以一个术语可能如下所示

<Subject>
<Terms>
<Non-Preferred_Term>
<Term_Text>hanging buttress</Term_Text>
<Term_Language>Dutch</Term_Language>
</Non-Preferred_Term>
More terms...
</Terms>
</Subject>

基本上我的逻辑是这样找到术语元素,找到非首选术语,查看每个语言的语言,如果语言与英语不匹配,则删除该术语。

for terms in term.iterfind ("Terms"):
    for term in terms.iterfind ("Non-Preferred_Term"):
        for language in term.iterfind ("Term_Language"):
            if language.text != ("English"):
                print (language.text)
                term.remove (term)
                print ("term deleted")

当我在我的测试文件上运行脚本时,它似乎可以工作,因为我打印出每种不是英语的语言文本,因为它运行后跟删除术语。但是,当我查看输出文件时,文件中仍然没有英文术语。当我在我的 700mb 文件上尝试它时,它似乎通常可以工作,但有时会因为 x 不在列表中而崩溃。

有什么建议么?

4

1 回答 1

1

这很可能是一个参考问题。你有:

for terms in term.iterfind('Term'):
    for term in terms:

任何循环之前的变量也是如此term,但是您在内部 for 循环中重新使用该名称。

于 2015-03-02T17:58:28.047 回答