IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Structure Pere Fils Arborescence


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut Structure Pere Fils Arborescence
    Bonjour,

    Je souhaite transformer une structure de donnée venant d'Excel (désolé pour la présentation):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    N° Eq  Ea  Eb  Ec  Ed
    1  Eq1 
    2      Ea2
    3      Ea3
    4          Eb1
    5          Eb2
    6      Ea4
    7          Eb3
    8              Ec1
    et le transformer en :

    Pere Fils
    1 2
    1 3
    3 4
    3 5
    1 6
    6 7
    7 8

    c'est mon premier gros script et je ne sais pas comment faire

    Merci

  2. #2
    Membre expérimenté Avatar de Gaillac
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    Et il y a un point précis qui te bloque, genre l'extraction des données, la transformation d'une représentation à l'autre, etc... ou tu attends du tout cuit?

    Oui je sais, dis comme ça j'ai l'air agressif, fait faut pas se formaliser.

    Par ailleurs je n'ai pas compris ta structure de données, mais ça ira peut être mieux demain..

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Gaillac Voir le message
    Par ailleurs je n'ai pas compris ta structure de données, mais ça ira peut être mieux demain..
    En fait, moi aussi je panais que dalle jusqu'à ce que je décide de répondre à son message. Et là, dans la partie qui reprend le message originel, j'ai vu qu'il y avait une structure arborescente que l'éditeur n'a pas conservé (il a tout recalé à gauche)

    Voici la structure réelle
    1 Eq1
    |__2 Ea2
    |__3 Ea3
    |__|__4 Eb1
    |__|__5 Eb2
    |__6 Ea4
    |__|__7 Eb3
    |__|__|___8 Ec1

    J'ai vaguement réfléchi au problème. Je pense que la fonction qui génère le résultat devra simplement conserver le parent immédiat, parent qui est calculé en fonction du nb de tabulations qui débute chaque ligne...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    Merci de votre aide

    Sve@r à raison, ma structure initiale n'a pas été conservé par l'éditeur.

    Le fichier de départ est de type Excel avec colonne N°, une colonne Eq, Ea, Eb, Ec ....

    Mon problème est le suivant, comment récupérer et conserver le numéro de ligne (correspondant à la colonne N° d'Excel) du père en fonction du fils afin de pouvoir créer une structure du type tableau 2 de mon message initial.

    Exemple 1 transformer :
    Eq1 père de Ea1, Ea2 et Ea4 en
    Pere Fils
    1 2
    1 3
    1 6

    Exemple 2 transformer :
    Eb3 père de Ec1 en
    Pere Fils
    7 8

    Aujourd'hui, j'arrive à lire le contenu des cellules Excel, avoir les bons résultats pour les niveau Eq, Ea et Eb, mais ensuite je n'y arrive pas. De plus n'étant pas informaticien, je pense que mon code n'est pas top.

    Si vous pouviez me transmettre des idées pour l'algo avec les fonctions Python à utiliser se serait vraiment

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Boaf je pensais qu'il faudrait un truc récursif mais finalement on peut faire sans...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #!/usr/bin/env python
    # coding: Latin-1 -*-
     
    # Structure de conservartion de l'arborescence
    arbo=[]
     
    # Fonction d'analyse
    def analyse(
    		arbo,
    		info):
    			# Compter le nb de tabulations
    			tab=0
    			for c in info:
    				if c == "\t": tab+=1
     
    			# On récupère le chiffre situé après la dernière tabulation
    			fils=info[tab]
     
    			# On stocke ce chiffre dans la profondeur actuelle
    			try:
    				arbo[tab]=fils
    			except IndexError:
    				arbo.append(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])
     
    # Pour tester
    data=(
    	"1 Eq1",
    	"	2 Ea2",
    	"	3 Ea3",
    	"		4 Eb1",
    	"		5 Eb2",
    	"	6 Ea4",
    	"		7 Eb3",
    	"			8 Ec1",
    )
     
    for info in data:
    		analyse(arbo, info)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    merci de ta réponse Sve@r, je vais tester ASAP

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Par défaut
    Citation Envoyé par jouclar Voir le message
    Sve@r à raison, ma structure initiale n'a pas été conservé par l'éditeur.
    La prochaine fois, pense aux balises CODE (#)

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    Merci Sve@r pour ton précieux coup de main. Je teste

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL server 2005] Problème de tris avec notion Père-Fils
    Par pedrover dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/12/2006, 16h43
  2. Communication pere/fils dans un serveur
    Par romainromain dans le forum Réseau
    Réponses: 4
    Dernier message: 22/11/2006, 19h47
  3. synchronisation processus pere fils
    Par Tex-Twil dans le forum POSIX
    Réponses: 6
    Dernier message: 25/10/2006, 11h34
  4. pere/fils
    Par innosang dans le forum C
    Réponses: 10
    Dernier message: 15/03/2006, 20h58
  5. modeliser relation pere fil
    Par flawer dans le forum Débuter
    Réponses: 20
    Dernier message: 12/12/2005, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo