python获取xml标签列表

问题描述 投票:1回答:2

我有这个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']

我没有找到父节点单独标签列表的功能,你能帮帮我吗?我不知道如何分离我的发现节点

python xml tags
2个回答
0
投票

这可以通过嵌套列表推导来实现。一种选择是在外部理解中找到所有“发现”元素,然后找到任何子元素。

[[ch.tag for ch in elt.findall('*')] for elt in doc.findall("discovers/discover")]

[['zoulou', 'yotta', 'alpha'], ['beta', 'omega']]

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']]
© www.soinside.com 2019 - 2024. All rights reserved.