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 :

extraction contenu txt dans une liste


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2013
    Messages : 29
    Points : 15
    Points
    15
    Par défaut extraction contenu txt dans une liste
    Bonjour,
    Voila mon problème, je dois extraire les données d'un txt presenté sous la forme
    a1,b1,c1,d1,
    a2,b2,c2,d2,
    a3,b3,c3,d3,
    a4,b4,c4,d4
    Pour pouvoir créer des listes de cette forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    listea = [a1,a2,a3,a4]
    listeb = [b1,b2,b3,b4]
    listec = [c1,c2,c3,c4]
    listed = [d1,d2,d3,d4]
    Bien sur il ne s'agit pas de a,b,c ou d mais de type d'élement different donc inutile de parler de répérer les lettres il s'agit de paramètre a rentrer dans un txt pour effectuer un test a partir d'un script python qui doit récuperer les differents paramètre qui peuvent être des int ou des str.
    Pour le moment j'arrive juste a extraire les données de la ligne et les presenté dans une liste de style[a1,b1,c1,d1]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test = file("E:\USERS\Nicolas\command_test.txt", 'r')
    donnee = test.readline().rstrip('\n\r').split(",")
    Merci d'avance de votre aide

    EDIT: Je suis sous windows en python 2.7.5

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 7 341
    Points
    7 341
    Par défaut
    Eh quel est le problème?

    Pour le moment j'arrive juste a extraire les données de la ligne et les presenté dans une liste de style[a1,b1,c1,d1]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2013
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Et bien le problème est que je souhaiterais faire une liste par colonne en gros meme si sur un fichier txt on ne peut pas parler de colonne
    Ca ferait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    liste1 [1er élément de la 1ere ligne, 1er élément de la 2nde ligne etc...] 
    liste2 [2nd élement de la 1ere ligne, 2nd élément de la 2nde ligne etc...]
    Mais j'ai beau cherche je ne trouve rien
    Mon but est d'avoir une liste par élément et pas une liste par ligne

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 7 341
    Points
    7 341
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> list_0 = [1, 2, 3]
    >>> list_1 = [4, 5, 6]
    >>> list_2 = [7, 8, 9]
     
    >>> list(zip(list_0, list_1, list_2))
    [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2013
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Ca ressemble mais ce n'est pas tout a fait ce que je cherche puisque la on a une seule liste avec des tuples (pas sur qu'on apelle ca un tuple mais ca ne change rien)
    Il faudrait que je puisse avoir trois listes différentes comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    list_0 = [1, 4, 7]
    list_1 = [2, 5, 8]
    list_2 = [3, 6, 5]

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 7 341
    Points
    7 341
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> res = [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
    >>> for tup in res:
    ...     print(list(tup))
    ... 
    [1, 4, 7]
    [2, 5, 8]
    [3, 6, 9]
    ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2013
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Le problème est qu'apres je dois récuperer les elements de chaque liste en paramètre
    Donc la effectivement on peux afficher 3 listes mais est-il possible de dire par exemple

    La syntaxe est fausse je suppose puisque j'obtiens une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: 'tuple' object is not callable
    mais je ne sais même pas si c'est possible :/
    Merci en tout cas fred pour ton aide

  8. #8
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 7 341
    Points
    7 341
    Par défaut
    Oui on peut mais c'est quand même la base en python, ça devient inquiétant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> res = [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
    >>> for tup in res:
    ...     a, b, c = tup
    ...     print("a vaut {0}, b vaut {1} et c vaut {2}".format(a, b, c))
    ... 
    a vaut 1, b vaut 4 et c vaut 7
    a vaut 2, b vaut 5 et c vaut 8
    a vaut 3, b vaut 6 et c vaut 9

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2013
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    C'est inquiétant pour quelqu'un qui a déjà fais du python mais je fais mes premiers pas sous python j'ai découvert ce langage en début de semaine et il m'est imposé à mon entreprise.
    Merci de ton aide mais je n'ai pas besoin de ce genre de remarque.

    De plus ce n'est toujours pas ce que je cherche mais j'ai trouver une solution pour contourner mon problème je vais effectuer une seule liste comprenant les données de ma 1ere ligne du txt et je ferais une boucle pour traiter la deuxieme ligne et ecrasé la première liste quand j'aurais récupéré les paramètres de la 1ère pour effectuer mon test.

  10. #10
    Membre averti Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Points : 390
    Points
    390
    Par défaut
    Bonjour,
    C'est souvent le même problème avec ce genre de question posée par l'exemple, les données réelles, connues du demandeur, ne sont pas communiquées. Ici, le fait que le nombre de ligne soit égal au nombre d'articles par ligne est-il le fruit d'un malencontreux hasard ? Comment ces nombres varient, s'ils sont variables ? Quelle est la propreté du fichier, est-il pollué éventuellement par des sauts de ligne, espaces, virgules en fin de ligne, etc. ? Le fichier vient-il de vous, d'un humain, d'un programme, de la toile, etc ?
    Un truc en une seule ligne qui est relativement solide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listes =  [list(_) for _ in zip(*[_.strip(',').split(',') for _ in open('file.txt', 'rb').read().strip().split('\n')])]
    Bien entendu, les listes ne sont pas nommées listea, listeb, ... mais ce sera listes[0], listes[1], etc.

  11. #11
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 7 341
    Points
    7 341
    Par défaut
    C'est inquiétant pour quelqu'un qui a déjà fais du python mais je fais mes premiers pas sous python j'ai découvert ce langage en début de semaine et il m'est imposé à mon entreprise.
    Désolé, j'ai peut-être été un peu brusque, mais pire encore quand une entreprise vous impose la découverte du langage, prenez le temps de lire le tutoriel de la documentation officielle, il y aura grand gain de temps.

    Il me semble pourtant avoir pris la même forme que vous utilisez en retour de votre fonction ou code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listea = [a1,a2,a3,a4] listeb = [b1,b2,b3,b4] listec = [c1,c2,c3,c4] listed = [d1,d2,d3,d4]
    et ma solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> list_0 = [1, 2, 3] >>> list_1 = [4, 5, 6] >>> list_2 = [7, 8, 9]   >>> list(zip(list_0, list_1, list_2)) [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
    Du coup je pense que votre difficulté se trouve dans l'utilisation de ce dernier résultat...

    je vais effectuer une seule liste comprenant les données de ma 1ere ligne du txt et je ferais une boucle pour traiter la deuxieme ligne et ecrasé la première liste quand j'aurais récupéré les paramètres de la 1ère pour effectuer mon test.
    Tout cela me semble malheureusement bien compliqué et non maintenable, cependant l'essentiel, je ne sais plus qui avait dit cela sur ce forum, c'est que le débutant puisse avoir un résultat fonctionnel, nous aurons donc le fond sans la forme, ce n'est peut-être pas l'essentiel vous me direz.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2013
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Oui je sais que prendre le temps de lire la doc est important j'ai d’ailleurs étudié la doc pendant près d'une semaine avec le guide de gérard swinnen

    Il est vrai que cette solution est plus compliqué mais pour le moment j'arrive a m'en sortir alors que avec votre solution effectivement je n'arrive pas exploiter le résultat

    Merci pour votre aide

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

Discussions similaires

  1. copier contenu requete dans une liste
    Par bellamouna dans le forum VBA Access
    Réponses: 3
    Dernier message: 22/09/2008, 13h26
  2. contenu txt dans une cellule tableau
    Par UDSP50 dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 27/05/2008, 16h35
  3. [MySQL] Récupérer contenu d'une table dans une liste dérouante
    Par gorgoroth dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/11/2007, 09h15
  4. [SQL] Afficher contenu d'une table dans une liste déroulante
    Par cdevl32 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 14/11/2007, 08h19
  5. acceder à une liste contenue dans une liste
    Par CPI_en_mousse dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 12/06/2007, 08h33

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