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 :

transformer liste en string puis en liste et ne lire que 1 element sur 2


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Février 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2010
    Messages : 58
    Par défaut transformer liste en string puis en liste et ne lire que 1 element sur 2
    Bonjour,
    La version de python 2.6.4.

    Je vous explique mon probleme, j'ai un fichier *.txt de cette forme
    a b
    c d
    e f
    etc...
    2 colonnes

    On me demande de lire un fichier de ce type et d'extraire uniquement la donné situé dans la colonne 1

    J'ai fait cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    zinc = open('C:\Test/testbd.txt,'r')
    test = zinc.readlines()
    J'ai obtenu une liste avec toutes mes données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ['a\tb\n', 'c\td\n', 'e\tf\n']
    J'avais pensé remplacer "\t" et "\n" par des virgules à l'aide de la commande "split" ou "append" mais ces commandes ne fonctionnent pas avec une liste.

    Donc une solution aurait été de transformer cette liste en string puis de transformer et de tout retransformer en list...
    Mais ca je ne sais pas faire

    Pouvez vous m'aider.
    Dans un deuxieme temps j'aurai aimé savoir si il était possible de ne lire que 1 élement sur 2 d'une liste, de mettre un pas de lecture ???
    en gros ne lire que "a c e" ?

    Merci
    Cédric

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Par défaut
    Bonjour,

    Avec une 'list comprehension' et les méthodes de chaines de caractères (split), ça se fait en 1 ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lst = ['a\tb\n', 'c\td\n', 'e\tf\n']
    print [elem.split("\t")[0] for elem in lst]
    affiche bienMathieu

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Février 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2010
    Messages : 58
    Par défaut
    Super merci
    mais en fait je viens de relire et je dois lire ligne par ligne
    je pense utiliser la fonction alors list.readline (sans s) puis l'incorporer dans une liste
    Cedric
    C'est une idée ?

  4. #4
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    As-tu regardé du côté du module csv ?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Pour lire ligne par ligne tu peux directement itérer l'objet file:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    zinc = open('file.txt', 'r')
     
    maList = []
    for line in zinc:
        maList.append(line.split("\t")[0])
    zinc.close()
     
    print maList
    Et avec une liste compréhension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    zinc = open('file.txt', 'r')
    maList = [line.split("\t")[0] for line in zinc]
    zinc.close()
     
    print maList

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Février 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2010
    Messages : 58
    Par défaut
    Merci tout plein

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

Discussions similaires

  1. List<Map<String, Object>> en List<User>
    Par scrutin dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 14/12/2012, 19h06
  2. inserer une string dans une liste de string
    Par la_reine dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 14/05/2008, 08h07
  3. Réponses: 23
    Dernier message: 08/06/2006, 15h06
  4. [VB.net] Join d'un Array list de string?
    Par the_bmo dans le forum VB.NET
    Réponses: 8
    Dernier message: 15/12/2005, 13h53
  5. Comparaison d'une liste de string à un string
    Par maxazac dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/10/2005, 15h39

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