У меня есть документ с этой структурой:Итерация над XML-документа
<?xml version="1.0" encoding="UTF-8"?>
<entries>
<entry>
<term>word_1</term>
<opinion source="data1" polarity="0.10" />
<opinion source="data2" polarity="0.4" />
</entry>
<entry>
<term>word_2</term>
<opinion source="data1" polarity="1.0" />
<opinion source="data2" polarity="-0.16666667" />
<opinion source="data3" polarity="0.004" />
</entry>
<entry>
<term>word_3</term>
<opinion source="data1" polarity="0.6" />
<opinion source="data2" polarity="0.0" />
</entry>
</entries>
Я никогда не работал с xml
раньше, и это доказывает, что боль. Я хочу извлечь слова, их полярность и источник. В идеале, исходя из этого примера, у меня было бы три словаря, названных в честь source
(я точно знаю, что у него много разных источников, поэтому вручную назвать словари не проблема), которые будут содержать слова как key
, а полярность - value
, т.
data1 = {'word1':0.10, 'word2':1.0, 'word3':0.6}
data2 = {'word1':0.4, 'word2':-0.16666667, 'word3':0.0}
data3 = {'word2':0.004}
Проблема в том, что я действительно не понимаю, как перебирать эту структуру. Я могу перебрать <term>
так:
import xml.etree.ElementTree as ET
tree = ET.parse('my.xml')
root = tree.getroot()
for term in root.iter('term'):
print term.text
Out:
word_1
word_2
word_3
Но я не могу добраться до source
и polarity
пунктов. Любая помощь приветствуется. Благодарю.
Этот файл является недопустимым XML согласно [этому механизму проверки XML] (http://www.xmlvalidation.com/index.php?id=1&L=0). Я также не мог разобрать его с помощью «ET». –
@ gr1zzlybe4r Да, извините, я скопировал неправильный отрезанный. Я редактировал файл. Теперь он должен работать. – Zlo
рад, что вы поняли это :) –