Analyse de fichiers Python: Construire une arborescence à partir d'un fichier texte

J'ai un texte mis en retrait de fichier qui sera utilisé pour construire un arbre. Chaque ligne représente un nœud, et les tirets représentent la profondeur ainsi que le nœud le nœud actuel est un enfant de.

Par exemple, un fichier peut ressembler à

RACINE 
Node1 
Node2 
Nœud3 
Nœud4 
Node5 
Node6 

Qui indique que la RACINE contient trois enfants: 1, 5, et 6, Node1 a un enfant: 2, et Node2 a un enfant: 3, etc.

Je suis venu avec un algorithme récursif et ont programmé et ça marche, mais c'est moche et surtout traite l'exemple ci-dessus, très grossièrement (lors du passage de nœud 4 nœud 5)

Il utilise "tiret compter" comme la base pour la récursivité, donc si le nombre de tirets = profondeur + 1, je voudrais aller à un niveau plus profond. Mais cela signifie quand j'ai lu une ligne avec moins de tirets, j'ai pour remonter d'un niveau à un moment, la vérification de la profondeur à chaque fois.

Voici ce que j'ai

def _recurse_tree(nœud parent, profondeur): 
onglets = 0 

alors que le nœud: 
onglets = node.count("\t") 
si les onglets == profondeur: 
print "%s: %s" %(parent.strip(), nœud.strip()) 
elif onglets == profondeur + 1: 
node = _recurse_tree(nœud, prev, profondeur+1) 
onglets = node.count("\t") 

#vérifier si nous avons à la surface de certains plus 
si les onglets == profondeur: 
print "%s: %s" %(parent.strip(), nœud.strip()) 
autre chose: 
retour nœud 
autre chose: 
retour nœud 

prev = node 
node = inFile.readline().rstrip() 

inFile = open("test.txt") 
racine = inFile.readline().rstrip() 
node = inFile.readline().rstrip() 
_recurse_tree(nœud racine, 1) 

Droit maintenant, je suis juste l'impression de les nœuds pour vérifier que le nœud parent est correct pour chaque ligne, mais peut-être il ya une façon plus propre de le faire? En particulier dans le cas de l'elif bloc quand je suis de retour de chaque récursion appel.

source d'informationauteur That Umbrella Guy