我有这个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']我没有找到按父节点分开标签列表的功能,你能帮我吗?我不知道如何分隔我的发现节点
发布于 2018-03-06 00:19:43
这可以通过嵌套列表理解来实现。一种选择是在外部理解中找到所有“发现”元素,然后找到任何子元素。
[[ch.tag for ch in elt.findall('*')] for elt in doc.findall("discovers/discover")]
[['zoulou', 'yotta', 'alpha'], ['beta', 'omega']]发布于 2018-03-06 00:59:31
实现所需内容的最佳方法是使用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']]https://stackoverflow.com/questions/49114501
复制相似问题