gpt4 book ai didi

python - 遍历 xml 文档

转载 作者:行者123 更新时间:2023-11-30 22:56:06 24 4
gpt4 key购买 nike

我有一个具有以下结构的文档:

<?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

但我无法访问sourcepolarity项目。任何帮助表示赞赏。谢谢。

最佳答案

看看这个,我想你应该能够理解它是如何工作的。

import xml.etree.ElementTree as ET

data = {}
tree = ET.parse('test.xml')
root = tree.getroot()

for entry in root.iter('entry'):
term = entry.find('term')
for opinion in entry.iter('opinion'):
termDict = data.setdefault(opinion.get('source'), {})
termDict[term.text] = opinion.get('polarity')

for k,v in data.items():
print k, v

关于python - 遍历 xml 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37143013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com