我有这个xml文件:
<root>
<discovers>
<discover>
<zoulou>zag</zoulou>
<yotta>bob</yotta>
<alpha>ned</alpha>
</discover>
<discover>
<beta>Zorro</beta>
<omega>Danseur</omega>
</discover>
</discovers>
</root>
在python3.6中我想得到这个输出:
[[zoulou,yotta,alpha],[beta,omega]]
实际上我可以在python
中使用此代码进行所有标记tree = etree.parse("./file.xml")
[elt.tag for elt in tree.findall("discovers/discover/*")]
我有这个输出:
['zoulou', 'yotta', 'alpha', 'beta', 'omega']
我找不到父节点单独标签列表的功能,你能帮帮我吗? 我不知道如何分离我的发现节点
答案 0 :(得分:0)
这可以通过嵌套列表推导来实现。一种选择是在外部理解中找到所有“发现”元素,然后找到任何子元素。
[[ch.tag for ch in elt.findall('*')] for elt in doc.findall("discovers/discover")]
[['zoulou', 'yotta', 'alpha'], ['beta', 'omega']]
答案 1 :(得分:0)
实现所需内容的最佳方法是使用BeautifulSoup4
来解决xml的最佳方法。from bs4 import BeautifulSoup
result = """<root>
<discovers>
<discover>
<zoulou>zag</zoulou>
<yotta>bob</yotta>
<alpha>ned</alpha>
</discover>
<discover>
<beta>Zorro</beta>
<omega>Danseur</omega>
</discover>
</discovers>
</root>"""
soup = BeautifulSoup(result, "lxml")
findName = lambda child: child.name
print [map(findName, x.findChildren()) for x in soup.findAll('discover')] # [['zoulou', 'yotta', 'alpha'], ['beta', 'omega']]