【发布时间】:2017-08-13 13:33:09
【问题描述】:
我编写了一个 for 循环,它从 XML 文件中返回多个像这样的元组。它看起来像这样:
(a, b, c)
(a, b, c)
(a, b, c)
(a, b, c)
........
XML 文件是这样的,a、b 和 c 在同一个子标签下。而且,as、bs 和 cs 中的每一个都是相同的数据类型。我尝试将每个添加到一个空列表 z= [] 中,z.append(yyy) 在同一个嵌套 for 循环中,我一直得到这样的东西:
[(a, b, c), (a, b, c)]
[(a, b, c)]
[(a, b, c), (a, b, c) ... ]
........
我明白为什么会这样,因为可能每个列表都绑定到 XML 树中的同一个子标记。然而,我想要的只是有一个这样的元组列表:
[(a, b, c), (a, b, c), (a, b, c), (a, b, c), ....]
使我能够将其转换为 Pandas DataFrame。最好的方法是什么?有没有办法直接从元组中做到这一点而无需制作列表?谢谢你。 因此,我的代码片段是:
for x in root.findall('xyz'):
y = x.abc[-1]
z = []
for s in x.iter('xxx'):
yyy = s.text, s.attrib['zzz'], y
z.append(yyy)
print(z)
注意:abc 是 xyz 的子元素,xxx 是 xyz 的另一个子元素。 zzz 是 xxx 元素标签中的一个属性。另请注意,该文档中的 xxx 有所不同:这意味着您可以在 xyz 元素下拥有多个。
XML 看起来像这样:
<root>
<xyz>
<abc>...</abc>
<abc>...</abc>
<abc>c</abc>
<xxx zzz='b'>a</xxx>
</xyz>
<xyz>
<abc>...</abc>
<abc>...</abc>
<abc>c</abc>
<xxx zzz='b'>a</xxx>
<xxx zzz='b'>a</xxx>
</xyz>
......
</root>
【问题讨论】:
标签: python xml list pandas data-science