Я разбираю большой XML-файл с использованием Python и застревает при удалении элемента. Я проверил логику, как и другой человек, однако по какой-то причине она все еще не работает. По сути, я пытаюсь удалить Непринятые Условия, которые не являются английскими, поскольку мы не требуем их в нашей системе. Таким образом, термин может выглядеть следующим образомPython условное удаление элемента
<Subject>
<Terms>
<Non-Preferred_Term>
<Term_Text>hanging buttress</Term_Text>
<Term_Language>Dutch</Term_Language>
</Non-Preferred_Term>
More terms...
</Terms>
</Subject>
По существу моя логика идет, как это найти термины Element, найти неосновную перспективу, обратите внимание на языке для каждого, и если язык не совпадает с английским, то удалите этот термин.
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, он, как правило, работает, но иногда вылетает с х, нет в списке.
Любые предложения?
Этот термин term.remove (term) 'выглядит подозрительным. Вы не можете удалить объект из себя ... не так ли? – Sam
@Sam Почему бы и нет? 'Х = []; x.append (х); x.remove (x) 'отлично работает: P Edit: Не сказать, что здесь правильная вещь. –
что моя ошибка действительно должна быть terms.remove (term). Я удаляю детский термин из списка терминов. – ADWALSH