1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| #!/usr/bin/env python
# coding: Latin-1 -*-
# Structure de conservartion de l'arborescence
arbo={}
# Fonction d'analyse
def analyse(
arbo,
info):
# Décomposition de l'info
elem=info.split("\t")
# On récupère le chiffre
fils=elem[0]
# Compter le nb de tabulations en sautant les deux premières (colonne E et F)
tab=0
vide=True
for c in elem[3:]:
if c != "":
vide=False
break
tab+=1
# En cas de ligne vide
if vide == True:
print "%s %s" % (fils, fils)
return
# On stocke le chiffre dans la profondeur actuelle
arbo[tab]=fils
# Si on a un père
if tab > 0:
# On écrit le fils courant et son père
print "%s %s" % (arbo[tab - 1], arbo[tab])
else:
# On écrit le fils deux fois
print "%s %s" % (arbo[tab], arbo[tab])
# Analyse()
# Pour tester (données issues d'un copier/coller depuis Excel)
data=(
"1 Porte automatique 1 / Quai 2 logistique sectionnelle ",
"2 Moteur ",
"3 Sécurités ",
"4 Tablier ",
"5 Élément de guidage ",
"6 Régulation / Contrôle / Commande ",
"7 Armoire électrique ",
"8 ",
"9 Porte automatique 2 / Quai 2 logistique basculante ",
"10 Moteur ",
"11 Sécurités ",
"12 Tablier ",
"13 Élément de guidage ",
"14 Régulation / Contrôle / Commande ",
"15 Armoire électrique ",
"16 ",
"17 Porte automatique 3 / Quai 1 réception ",
"18 Moteur ",
"19 Sécurités ",
"20 Tablier ",
"21 Élément de guidage ",
"22 Régulation / Contrôle / Commande ",
"23 Armoire électrique ",
"24 ",
"25 Porte automatique 4 / Quai 1 réception ",
"26 Moteur ",
"27 Sécurités ",
"28 Tablier ",
)
for info in data:
analyse(arbo, info) |