J'ai besoin d'extraire des données d'une structure et de les mettre dans une liste, mais je ne sais pas combien de niveaux la structure a.Comment parcourir tous les niveaux d'une structure de données pour extraire toutes les données lorsque je ne sais pas combien de niveaux y aura-t-il?
Pour chaque niveau, je peux appeler level.children()
, s'il n'y a pas des niveaux inférieurs à celui en cours, il retourne []
, s'il y a, elle retourne [object, object, ...]
, sur chacun desquels je peux appeler children()
à nouveau.
Je dois explorer la structure jusqu'à ce que j'aie extrait tous les niveaux de données dans une liste.
Lorsque basée hors d'une structure comme celle-ci:
<name>John Smith</name>
<team link="http://teamwebsite.com">
<name>Team Name</name>
</team>
<games>
<location>
<venue>A stadium</venue>
</location>
</games>
La liste devrait ressembler à ceci:
[
[
{'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},
],
]
J'essaie de comprendre le Python j'utiliser pour obtenir de la structure de données à ma liste. J'ai besoin d'une sorte de boucle auto-entretenue, mais je ne peux pas trouver une bonne solution.
Quelque chose pour me diriger dans la bonne direction? Je suis sûr qu'il y a une bonne théorie pour ce genre de chose que je ne connais pas du tout mais que je serais content de lire.
Y a-t-il? XML est un arbre. Bien que si vous aviez un XSD, vous sauriez quels nœuds pourraient avoir des enfants et combien (même si "combien" était illimité). –
@Thomas Owens: En l'analysant, je ne veux pas écrire l'algorithme pour l'analyser moi-même ... –
Ah, un itérateur intégré. C'est merveilleux: p. Merci pour ces liens, je vais les lire tous. À votre santé. – user116170