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 :

Problème csv python.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut Problème csv python.
    Bonjour à toutes et tous .

    Voilà je débute en python et je me frotte à un problème avec un fichier csv. Mon problème vas sans doute vous paraître trivial mais je ne lui trouve pas de solution dans les doc.

    Pour l'exercice j'ai créer le fichier suivant cours.csv suivant :

    A,B,C,D
    1,2,3,4
    5,6,7,8
    9,10,11,12
    13,14,15,16

    je l'importe comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import csv # on importe la bibliothèque csv
    f=open('cours.csv') # création de la variable lien vers notre fichier csv
    fichiercsv=csv.reader(f) # ouverture de la variable f dans l'instruction reader 
    for ligne in fichiercsv:
        print(ligne) # pour chaque ligne appartennant au fichier csv, écrire le contenu de la ligne.
    je voudrais pouvoir pouvoir appliquer des formules au contenu de mes colonnes donc je redéfinit mes listes comme ceci :

    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
     
     
    liste1 = [] #On définit des variables 'listes' vides.
    liste2 = []
    liste3 = []
    liste4 = []
     
    for ligne in fichiercsv: # pour chaque ligne appartenant à 'cours.csv' :
        a = ligne[0] # ligne indice [0] donc ligne ['A', 'B', 'C', 'D']
        b = ligne[1] # ligne indice [1] donc ligne ['1', '2', '3', '4']
        c = ligne[2] # //
        d = ligne[3] # //
     
        liste1.append(a) # on ajoute la variable 'a' à la 'liste1'
        liste2.append(b) # on ajoute la variable 'b' à la 'liste2'
        liste3.append(c) # //
        liste4.append(d) # //
     
    print(liste1) # on imprime les lignes précédement définies. 
    print(liste2)
    print(liste3)
    print(liste4)
    ce qui me donne ceci :
    ['A', '1', '5', '9', '13']
    ['B', '2', '6', '10', '14']
    ['C', '3', '7', '11', '15']
    ['D', '4', '8', '12', '16']

    Le problème, c'est que mes valeurs numériques sont des chaines, je ne peu donc pas travailler avec. j'ai donc essayer faire passer mes mavleurs numériques en float comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for ligne in fichiercsv: # pour chaque ligne appartenant à 'cours.csv' :
     
        a = float (ligne[0]) # ligne indice [0] donc ligne ['A', 'B', 'C', 'D']
        b = float (ligne[1]) # ligne indice [1] donc ligne ['1', '2', '3', '4']
        c = float(ligne[2]) # //
        d = float (ligne[3]) # //
    Mais la drame... Les lettre ne passent pas en float ... Ce qui est logique.

    Ma question est donc la suivante : comment faire pour garder les chaines de ma ligne[0] tout en passant les autres lignes 1,2 et 3 en float ?

    Merci beaucoup pour votre aide.
    ( message sans doute un peu trop long mais je retranscrit ma réflexion complète pour être claire ^^ )

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Moineau.G Voir le message
    Ma question est donc la suivante : comment faire pour garder les chaines de ma ligne[0] tout en passant les autres lignes 1,2 et 3 en float ?

    Plutôt qu'écrire:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for ligne in fichiercsv: # pour chaque ligne appartenant à 'cours.csv' :
     
        a = float (ligne[0]) # ligne indice [0] donc ligne ['A', 'B', 'C', 'D']
        b = float (ligne[1]) # ligne indice [1] donc ligne ['1', '2', '3', '4']
        ...
    écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for ligne in fichiercsv: # pour chaque ligne appartenant à 'cours.csv' :
     
        a = ligne[0] # ligne indice [0] donc ligne ['A', 'B', 'C', 'D']
        b = float (ligne[1]) # ligne indice [1] donc ligne ['1', '2', '3', '4']
        ...
    devrait le faire.

    mais vous avez des exercices corrigés dans les tutos pour apprendre à programmer: ce serait bien plus facile pour apprendre les bases.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut
    Merci pour la réponse

    Il y a nombre de cours et tutos effectivement, j'en suit en // à ces petits exercices de tests qui me posent parfois problèmes. et je compte bien continuer. Ces justement ces différents cours et tutos que j'appel ma ''doc''. Ceux que j'ai pu trouver jusque là concernant les csv ne prenait en compte que des CSV de chiffres bruts ne contenant aucune chaine ^^


    une idée de cours plus précis concernant les fonction de la bibliotheque csv ? je suis preneur !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for ligne in fichiercsv: # pour chaque ligne appartenant à 'cours.csv' :
        a = ligne[0] # ligne indice [0] donc ligne ['A', 'B', 'C', 'D']
        b = float (ligne[1]) # ligne indice [1] donc ligne ['1', '2', '3', '4']

    C'est une solution que j'ai déjà essayé (j'aurais du le préciser désolé ) mais qui me renvoi l'erreur suivante :

    ---------------------------------------------------------------------------
    ValueError Traceback (most recent call last)
    <ipython-input-43-42654ec0def0> in <module>
    11 for ligne in fichiercsv: # pour chaque ligne appartenant à 'cours.csv' :
    12 a = ligne[0] # ligne indice [0] donc ligne ['A', 'B', 'C', 'D']
    ---> 13 b = float (ligne[1]) # ligne indice [1] donc ligne ['1', '2', '3', '4']
    14 c = float (ligne[2]) # //
    15 d = float (ligne[3]) # //

    ValueError: could not convert string to float: 'B'
    J'en conclu que cela n'as fonctionner que pour la première valeur de la liste [0] ... et je ne comprend pas pourquoi

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Moineau.G Voir le message
    J'en conclu que cela n'as fonctionner que pour la première valeur de la liste [0] ... et je ne comprend pas pourquoi
    c'est que ligne ne ressemble pas à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ['A', '1', '5', '9', '13']
    ['B', '2', '6', '10', '14']
    ['C', '3', '7', '11', '15']
    ['D', '4', '8', '12', '16']
    mais plutôt à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A,B,C,D
    1,2,3,4
    5,6,7,8
    9,10,11,12
    13,14,15,16
    Ce que vous aurait montré un "print" de la ligne.

    Et il faut sauter la première ligne plutôt que la première colonne.
    En programmation "basique", on peut définir un "drapeau" pour sauter la première ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    drapeau = 0
    for line in csv:
         if drapeau == 0:
            drapeau += 1
            continue
        a = float(....)
    Citation Envoyé par Moineau.G Voir le message
    une idée de cours plus précis concernant les fonction de la bibliotheque csv ? je suis preneur !!
    A la sortie de l'apprentissage des bases avec un tuto. vous devez savoir lire la documentation et connaître les constructions de bases.

    par exemple sauter la première ligne se fait aussi via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    next(csv)
    for line in csv:
         ....
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Problème CSV datasource
    Par tqool dans le forum iReport
    Réponses: 2
    Dernier message: 16/06/2009, 17h07
  2. Installer Omni : Problème avec Python
    Par Colbix dans le forum CORBA
    Réponses: 1
    Dernier message: 18/02/2009, 14h30
  3. [turbogears] problème avec python 2.5
    Par gorgonite dans le forum Général Python
    Réponses: 1
    Dernier message: 23/05/2007, 17h48
  4. [Linux-XML] Probléme avec python-xml
    Par Exodus dans le forum Général Python
    Réponses: 5
    Dernier message: 27/03/2007, 15h47
  5. Problème avec python
    Par Thrystan dans le forum Gnome
    Réponses: 2
    Dernier message: 17/08/2006, 00h29

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