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 :

écriture dans un fichier cvs [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut écriture dans un fichier cvs
    Bonjour à toutes et tous,

    Je suis en train de réaliser un exercice en python aillant plusieurs fonction charger, afficher, ajouter une entrée, modifier une entrée, sauver un dictionnaire français anglais.
    j'arrive à bien charger le fichier que je fais passer dans un dictionnaire, seulement voilà, quand je veux le sauver il me met toujours une ligne vide entre deux entrées.
    j'ai fais un condenser du code pour ne pas que ce soit trop brouillon qui reprend le chargement du dico, l'ajout d'une entrée et de la sauvegarde et peu plus bas le résulat dans le fichier cvs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    import csv
    dictionnaire = {}
    cr = csv.reader(open("test2.csv", "r"))
    for i, ii in cr:
        dictionnaire[i] = ii
    for i in dictionnaire:
        print(i, dictionnaire[i])
    dictionnaire["chose"] = "thing"
    for i in dictionnaire:
        print(i, dictionnaire[i])
    sav = csv.writer(open("test2.csv", "w"))
    for i in dictionnaire:
            sav.writerow([i, dictionnaire[i]])
    Nom : cvs.png
Affichages : 235
Taille : 51,3 Ko

    selon vous qu'est ce qui fait que j'ai a chaque fois une ligne entre les entrées?

    D'avance merci.
    Images attachées Images attachées  

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2013
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Par défaut
    Hello,

    M'est d'avis que le reader capte une fin de ligne de type '\n' (retour à la ligne). A la ligne 6 essayez de remplacer dictionnaire[i] = ii par dictionnaire[i] = ii.split('\n').

    Avez-vous essayez la librairie pandas et sa méthode pandas.read_csv() ? Celle-ci crée un dataframe contenant vos données, que vous pouvez alimenter, modifier, effacer, etc... Doc : https://pandas.pydata.org/pandas-doc....read_csv.html

    Une fois que tout est fait, vous pouvez enregistrer avec la méthode pandas.to_csv(). Doc : https://pandas.pydata.org/pandas-doc...taFrame.to_csv

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Merci, je vais tester ça ce soir.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 756
    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 756
    Par défaut
    Salut,

    Les fichiers texte passés à csv.reader/.writer doivent être ouvert avec l'option newline=''.
    Voir la documentation..

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

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par charliemtx Voir le message
    A la ligne 6 essayez de remplacer dictionnaire[i] = ii par dictionnaire[i] = ii.split('\n').
    ii.strip(), laquelle retourne une chaine, et non pas ii.split() qui retourne une liste. Me semble que le PO veut récupérer une chaine et pas une liste dans son dico. Ou alors ii.split("\n")[0] le fait mais c'est dommage de passer par une liste pour ensuite n'extraire que son premier élément.

    Accessoirement ce code...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dictionnaire={}
    for i, ii in cr:
        dictionnaire[i] = ii
    ... peut s'écrire dictionnaire=dict((i, ii) for (i, ii) in cr) (et ici ce sera dictionnaire=dict((i, ii.strip()) for (i, ii) in cr)).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Merci à tous,
    et en particulier à Wiztricks, tu me sauves .

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2005, 11h57
  2. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  3. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  4. Passer à la ligne lors de l'écriture dans un fichier
    Par hams dans le forum Assembleur
    Réponses: 4
    Dernier message: 17/04/2005, 19h25
  5. [JUnit] Junit écriture dans un fichier
    Par mikael35 dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 10/08/2004, 13h11

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