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 :

Modification d'un fichier csv


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut Modification d'un fichier csv
    Bonjour,

    je dispose d'un fichier CVS dont j'aimerai modifier une colonne, cette colonne contient des numéros précédés d'une chaine de caractère : "num".
    J'aimerai modifier ce fichier de façon a éffacer "num" et a ne garder que le nombre qui suit.

    Je n'ai jamais modifier de fichier via Python, mon script semble un peu fouilli...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import csv             # j'importe le module csv
     
    fichier = open('test.csv','rb')          #j'ouvre mon fichier
    fichiercsv = csv.reader(fichier, delimiter=' ')          #je le lis
     
    for ligne in fichiercsv:                          # enfin je boucle et je remplace les "num" par rien
     
         csv.replace("num", "")
     
    fichier.close()                      #je ferme le fichier

    Biensur ce code ne fonctionne pas, plus étonnant j'obtiens une erreur dès la 1ere ligne,
    "import : commande introubable".

    Merci à vous

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Dans la boucle 'for', ligne est la liste des champs de l'enregistrement. Le remplacement ne peut se faire que sur l'un des champs. Par exemple, si c'est le 3e champ (=indice 2):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ligne in fichiercsv:
        ligne[2]=ligne[2].replace("num", "")

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut
    Bonjour,

    merci pour votre réponse,

    j'ai modifié mon code comme vous me l'avez suggéré, cependant j'aimerai appliqué cette modification à l'ensemble des lignes de mon fichier, j'avais donc pensé a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for ligne in fichiercsv:
     
    	ligne = ligne.replace("num","")
    mais j'obtiens le message d'erreur suivant ;


    AttributeError: 'list' object has no attribute 'replace'

    Je dois reconnaître que je ne comprends pas tout, cela signifie que je ne peux pas appliquer la fonction replace sur mon indice ligne ?

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    - replace est une méthode qui s'applique à une chaine de caractères

    - ligne est ici une liste de chaines et non une chaine: ligne.replace génère donc une erreur!

    - ligne[2], par contre est une chaine: c'est le 3e élément de la liste "ligne".

    Pour appliquer le remplacement à toutes les lignes et retrouver le résultat après la boucle, il faut récupérer le résultat de chaque ligne dans une nouvelle liste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    listecsv = []
    for ligne in fichiercsv:
        ligne[2]=ligne[2].replace("num", "")
        listecsv.append(ligne)
    # ici, listecsv contient toutes les lignes après application du remplacement
    Ce serait bien de passer un peu de temps avec le cours de Gérard Swinnen: http://python.developpez.com/cours/TutoSwinnen/ .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut
    Merci pour votre réponse je comprends mieux, je vais étudier attentivement ce tutoriel.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut
    J'aurais juste une dernière question

    Lorsque je test ce code j'ai le message d'erreur suivant ;


    IndexError: list index out of range
    j'ai déjà vu ce message d'erreur lorsque je tentais de faire rentrer X données dans un tableau avant seulement X-1 places, mais ici ce n'est pas le cas, je n'ai pas de taille pré défini :/

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

Discussions similaires

  1. Modification dans un fichier csv en php
    Par louise70 dans le forum Langage
    Réponses: 1
    Dernier message: 13/02/2015, 12h06
  2. Modifications sur un fichier CSV en Input (PDI)
    Par Nesrine_SM dans le forum kettle/PDI
    Réponses: 0
    Dernier message: 30/08/2012, 11h45
  3. Modification d'un fichier CSV
    Par Tobear91 dans le forum Langage
    Réponses: 2
    Dernier message: 12/02/2011, 18h32
  4. Modification d'un fichier csv ?
    Par dauphin34000 dans le forum Langage
    Réponses: 2
    Dernier message: 15/08/2008, 14h07
  5. fichier CSV modification des données.
    Par suya95 dans le forum Excel
    Réponses: 8
    Dernier message: 26/07/2006, 12h22

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