0
我正在使用Python解析一個大的XML文件,並堅持刪除一個元素的條件。我已經檢查過邏輯和其他人一樣,但無論出於何種原因,它仍然不起作用。基本上,我試圖刪除非英語的非優先條款,因爲我們不需要在我們的系統中使用它們。所以,一個術語可能像下面Python有條件地去除元素
<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不在列表中崩潰。
有什麼建議嗎?
這個'term.remove(term)'看起來很可疑。你不能從自己身上移除一個物體......你能嗎? – Sam 2015-03-02 17:52:27
@Sam爲什麼不呢? 'X = []; x.append(X); x.remove(x)'工作得很好:P編輯:不是說這是正確的事情。 – 2015-03-02 17:53:25
我的錯誤應該是terms.remove(term)。我正在從條款清單中刪除子條款。 – ADWALSH 2015-03-03 10:54:49