当我不知道将有多少级别时,如何循环遍历数据结构的所有级别以提取所有数据?

时间:2009-11-02 19:13:27

标签: python xml data-structures loops

我需要从结构中提取数据并将其放入列表中,但我不知道结构有多少级别。

对于每个级别,我可以调用level.children(),如果当前级别之下没有级别,则返回[],如果有,则返回[object, object, ...],每个级别我可以再次致电children()

我需要向下钻取整个结构,直到我将所有级别的数据提取到列表中。

基于这样的结构:

<name>John Smith</name>
<team link="http://teamwebsite.com">
    <name>Team Name</name>
</team>
<games>
    <location>
        <venue>A stadium</venue>
    </location>
</games>

列表应如下所示:

[
    [
        {'name': 'name', 'attrs': {}, 'text': 'John Smith', 'parent': None},
    ],
    [
        {'name': 'team', 'attrs': {'link': 'http://teamwebsite.com'}, 'text': '', 'parent': None},
        {'name': 'name', 'attrs': {}, 'text': 'Team Name', 'parent': 1}, # the reference to its parent's position in the list
    ],
    [
        {'name': 'games', 'attrs': {}, 'text': '', 'parent': None},
        {'name': 'location', 'attrs': {}, 'text': '', 'parent': 1},
        {'name': 'venue', 'attrs': {}, 'text': 'A stadium', 'parent': 2},
    ],
]

我正在试图找出我用来从数据结构到我的列表的Python。我需要一种自我延续的循环,但我无法想出一个好的解决方案。

有什么能指引我正确的方向吗?我确信这种事情有一些很好的理论,我完全不知道,但很乐意阅读。

2 个答案:

答案 0 :(得分:10)

您正在描述recursion,但我猜测有betterwaystoparseXML

答案 1 :(得分:5)

您希望在此处使用的概念称为“Recursion”。