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 :

Module csv : comment enregistrer les données lues ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    Par défaut Module csv : comment enregistrer les données lues ?
    Bonsoir à tous,

    Dans une discussion antérieure, il avait été attiré mon attention sur l'existence du module csv...
    Le code suivant marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import csv
    bilan=csv.reader(open('pentagrammes.csv','r'))
    for L in bilan:
        print L
    Ayant lu que L était une liste, et que en tant que telle on pouvait récupérer seulement des "colonnes" définies, j'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import csv
    bilan=csv.reader(open('pentagrammes.csv','r'))
    for L in bilan:
        print L[0],L[1],
    Ca marche (j'ai 12 colonnes en tout, je n'en veux que 2...)
    Alors je suis allé plus loin, et j'ai testé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import csv
    C=[]
    bilan=csv.reader(open('pentagrammes.csv','r'))
    for L in bilan:
        C.append(L[0]+L[1])
    et aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import csv
    C=[]
    bilan=csv.reader(open('pentagrammes.csv','r'))
    for L in bilan:
        C+=L[0]+L[1]
    Si dans les deux premiers cas, mes lignes défilent un certain temps (j'en ai 8000), dans les deux autres, il ne se passe rien : le processus ne se lance pas (ou s'arrête immédiatement ?).
    Je teste alors en tapant C : C est resté vide...
    J'ai beau lire la doc, je ne comprends pas comment récupérer les données de 2 colonnes de mon fichier.
    Mon but est d'utiliser 8 fichiers .csv de structure identique, d'extraire les deux colonnes voulues et les stocker les unes à la suite des autres...

    Un p'tit coup de pouce ne serait pas de refus...

    Merci d'avance


    Quand je tes

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Je crois que ce n'est rien que cela:
    C.append(Truc)
    Truc peut être n'importe quoi
    C+=Truc
    Truc doit ici être une liste
    Quant au problème du n°3 c'est peut être que l'addition n'est pas définie entre les types de L[0] et L[1]
    C.append(L[1]) devrait marcher
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Le type de L[0] et L[1) est une string, donc l'addition est définie et c'est une concaténation. C à la fin du programme devrait être une liste de string - ce qui n'est pas clair c'est comment tu l'affiches. Est ce que tu as essayé ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import csv
    C=[]
    bilan=csv.reader(open('pentagrammes.csv','r'))
    for L in bilan:
        C.append(L[0]+L[1])
     
    for i in C:
        print i
    Quant à la quatrieme solution, ca n'ira vraiment pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> L=[]
    >>> L+="abc"+"def"
    >>> L
    ['a', 'b', 'c', 'd', 'e', 'f']

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    Par défaut
    Bonsoir,

    Merci à vous deux...
    @Fructidor...
    Il se passe des choses étranges ou alors je devais être dans un état second...
    Toujours est-il que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import csv
    C=[]
    bilan=csv.reader(open('pentagrammes.csv','r'))
    for L in bilan:
        C.append(L[0]+L[1])
     
    for i in C:
        print i
    marche... Donc j'ai retenté l'expérience avec : print C.
    Ca marche aussi, ainsi que taper direct :
    Par contre et là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import csv
    C=[]
    bilan=csv.reader(open('pentagrammes.csv','r'))
    for L in bilan:
        C+=L[0]+L[1]
     
    for i in C:
         print i
    je sursaute, je ne m'attendais pas à ça...
    Au lieu de ligbes qui défilent du type :
    J'ai un défilement de 1 caractère à la fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    A
    B
    I
    E
    N
     
     
    7
    et ainsi de suite jusqu'à la fin du fichier...
    Comment expliquer ça ?



    @Zavonen
    Je crois que ce n'est rien que cela:
    C.append(Truc)
    Truc peut être n'importe quoi
    C+=Truc
    Truc doit ici être une liste
    Quant au problème du n°3 c'est peut être que l'addition n'est pas définie entre les types de L[0] et L[1]
    Truc doit être ici une liste : bien d'accord, mais j'avais lu qu'à l'importation des données d'un fichier csv
    était une liste : je ne retrouve pas la ref où j'ai lu ça...
    par contre la documentation officielle dit, elle :
    All data read are returned as strings. No automatic data type conversion is performed.
    Cela semblerait dire que ma première info était erronée...
    Mais ça ne m'explique pas le défilement en colonne d'un caractère à la fois... Ou alors, si Truc est un string, Truc[0] et Truc[1] sont respectivement les deux premiers caractères et le parcours des deux colonnes se fait ligne par paires de deux caractères à la fois... bizarre comme explication, non ?
    Et dans ce cas pourquoi le C+=L[0]+L[1] n'a-t-il pas déclenché d'erreur ?

    Merci de vos lumières

    @+

  5. #5
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Citation Envoyé par yoshik
    je sursaute, je ne m'attendais pas à ça...
    Au lieu de ligbes qui défilent du type :
    J'ai un défilement de 1 caractère à la fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    A
    B
    I
    E
    N
     
     
    7
    et ainsi de suite jusqu'à la fin du fichier...
    Comment expliquer ça ?
    Citation Envoyé par Fructidor Voir le message
    Le type de L[0] et L[1] est un string, donc l'addition est définie et c'est une concaténation.
    [...]
    Quant à la quatrieme solution, ca n'ira vraiment pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> L=[]
    >>> L+="abc"+"def"
    >>> L
    ['a', 'b', 'c', 'd', 'e', 'f']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> L=[]
    >>> L+=["abc"]+["def"]
    >>> L
    ['abc', 'def']

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    Par défaut
    Salut,

    Merci N.tox de m'avoir (fort élégamment) montré que je ne "savais pas lire"
    Bon, j'aurais dû faire plus attention, c'est vrai...

    Je classe en résolu...

    @+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/08/2009, 10h19
  2. ou/comment enregistrer les données
    Par alaink dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 22/06/2009, 09h33
  3. Réponses: 3
    Dernier message: 18/10/2005, 13h43
  4. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 16h37
  5. [DOM] comment enregistrer les modifs?
    Par noobiewan kenobi dans le forum Format d'échange (XML, JSON...)
    Réponses: 26
    Dernier message: 30/07/2004, 10h56

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