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 :

Création d'un fichier CSV à partir d'un dictionnaire


Sujet :

Python

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut Création d'un fichier CSV à partir d'un dictionnaire
    Bonjour,

    Je souhaite avoir votre aide concernant la création de fichier CSV à partir d'un dictionnaire, en effet le script que j'ai céé fonctionne mais il ajoute insère une ligne vide entre deux lignes de données

    Voici le code :
    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
     
    dyc = {
        'a50' : ['text1', 50, 40],
        'k77' : ['text2', 60, 10]
            }
     
    myfile = open('csv-test.csv', 'w')
    mywriter = csv.writer(myfile, delimiter=';', dialect='excel')
     
    for k,[a,b,c] in dyc.items():
        mywriter.writerow([k,a,b,c])
     
    myfile.close()
    et voici le contenu du fichier crée :
    a50;text1;50;40

    k77;text2;60;10
    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 049
    Par défaut
    Pourquoi ne pas utiliser simplement writerows?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mywriter.writerows([[k, a, b, c] for k, [a, b, c] in dyc.items()])

  3. #3
    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,

    Il suffit de préciser la fin de ligne qu'on veut avec l'option "lineterminator":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    mywriter = csv.writer(myfile, delimiter=';', dialect='excel', lineterminator='\n')
    ...
    Et, curieusement, le '\n' sous Windows génère la bonne fin de ligne '\r\n'...

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    fred1599 : je ne préfère pas utiliser ce type de code car encore trop difficile à relire pour moi, mais merci de ton aide

    tyrtamos : effectivement j'ai oublié une partie de la doc, le rajout de lineterminator='\n' fait la différence, merci

    Voici le code final :
    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
     
    dyc = {
        'a50' : ['text1', 50, 40],
        'k77' : ['text2', 60, 10]
            }
     
    myfile = open('csv-test.csv', 'w')
    mywriter = csv.writer(myfile, delimiter=';', dialect='excel', lineterminator='\n')
     
    for k,[a,b,c] in dyc.items():
        mywriter.writerow([k,a,b,c])
     
    myfile.close()
    et voici le résultat :
    a50;text1;50;40
    k77;text2;60;10

    merci à tous deux

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

Discussions similaires

  1. création fichier CSV à partir une table
    Par neoboy dans le forum Macros Access
    Réponses: 11
    Dernier message: 06/12/2012, 11h17
  2. [MySQL] Création d'un fichier xml à partir d'une table
    Par astrolane dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/12/2006, 23h12
  3. Fichier CSV à partir un programme C
    Par Premium dans le forum C
    Réponses: 3
    Dernier message: 25/05/2006, 23h53
  4. Ecrire un fichiers CSV à partir de 3 fichiers Excel
    Par yas2006 dans le forum Documents
    Réponses: 22
    Dernier message: 14/03/2006, 14h10
  5. Réponses: 1
    Dernier message: 20/10/2005, 10h32

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