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 :

multiples pb de formatage fichiers csv lors du passage de Pyhton 2.7 vers Python 3.6 [Python 3.X]


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Janvier 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Janvier 2016
    Messages : 36
    Par défaut multiples pb de formatage fichiers csv lors du passage de Pyhton 2.7 vers Python 3.6
    Bonjour,

    Je suis en train de mettre à jour un programme écrit en Python 2.7 vers Python 3.6.
    Concernant la lecture/écriture de fichiers csv, je ne parviens plus à enregistrer une ligne identique à la chaine de données préparée.

    Les données stockées dans les tableaux (T1_Arr[-1] , I1_Arr[-1] , etc...) étant des float , je réalise un cast en str(), puis j'applique une méthode .join pour formater la chaine à sauver.
    Après test, la chaine ainsi préparée semble correspondre exactement à ce que je souhaite sauvegarder

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    maVar =(str(T1_Arr[-1]),str(I1_Arr[-1]),str(H1_Arr[-1]),str(P1_Arr[-1]))
    maVar = ','.join(maVar)
    print(type(maVar))
    print (maVar)
    <class 'str'>
    19.0,-129.0,403.0,5.212673664
    Mais le fichier csv généré n'est pas du tout conforme à ce que j'attendais... Chaque caractère composant "la phrase" est séparé d'une virgule...
    1,9,.,0,",",-,1,3,2,.,0,",",4,0,3,.,0,",",5,.,2,1,2,6,7,3,6,6,4,"
    Ci-dessous le code utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    myFile = open(dataFileName,'a')
    theWriter = csv.writer(myFile, dialect='excel')
    maVar =(str(T1_Arr[-1]),str(I1_Arr[-1]),str(H1_Arr[-1]),str(P1_Arr[-1]))
    maVar = ','.join(maVar))
    theWriter.writerow(maVar)
    Comment paramétrer l'écriture ou formater ma chaine de caractères afin de la sauvegarder dans un format 19.0,-129.0,403.0,5.212673664 (plus passage à la ligne) ?

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

    Citation Envoyé par scarou Voir le message
    Les données stockées dans les tableaux (T1_Arr[-1] , I1_Arr[-1] , etc...) étant des float , je réalise un cast en str(), puis j'applique une méthode .join pour formater la chaine à sauver.
    Pourquoi utiliser le module CSV si c'est pour faire tout çà vous même?
    ou plutôt pourquoi mettre un zeste de module CSV dans votre code sans prendre le temps d'ouvrir la documentation pour voir ce qu'il fait pour vous et comment l'utiliser?

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

  3. #3
    Membre averti
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Janvier 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Janvier 2016
    Messages : 36
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Pourquoi utiliser le module CSV si c'est pour faire tout çà vous même?
    ou plutôt pourquoi mettre un zeste de module CSV dans votre code sans prendre le temps d'ouvrir la documentation pour voir ce qu'il fait pour vous et comment l'utiliser?

    - W
    C'est une réponse qui est supposée m'aider ?

    Si j'avais trouvé seul la réponse en lisant la documentation, il me semble que je n'aurais pas posé de question ... non ?

    Si tu as des éléments concrets permettant d'identifier le problème afin de le résoudre, merci de les partager, sinon... Pourquoi faire ce genre de réponse ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    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 720
    Par défaut
    Citation Envoyé par scarou Voir le message
    Si tu as des éléments concrets permettant d'identifier le problème afin de le résoudre, merci de les partager, sinon... Pourquoi faire ce genre de réponse ?
    Parce que vous êtes supposé savoir lire une documentation et la relire lorsque çà ne fait pas ce que vous aviez cru comprendre. Après je peux vous faire une lecture de la documentation i.e. on lance la console Python et on regarde si on a bien compris ce qu'elle raconte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> import csv
    >>> import sys
    >>> writer = csv.writer(sys.stdout)
    puis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> writer.writerow('abcd')
    a,b,c,d
    9
    car writer.writerow prend un itérable.
    Donc, si on part de l'itérable:
    pour en faire un autre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> line = ';'.join(str(z) for z in row)
    çà fera juste ce que vous lui avez demandé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> writer.writerow(line)
    1,1,;,2,2,;,3,3
    alors qu'il saurait très bien le faire tout seul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> writer.writerow(row)
    11,22,33
    10
    >>>
    Et si vous vous contentez de lire la documentation sans essayer de comprendre ce que çà dit en testant, c'est comme si vous ne l'aviez pas lue.

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

  5. #5
    Membre averti
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Janvier 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Janvier 2016
    Messages : 36
    Par défaut
    Si la documentation seule suffisait à toute explication, il n'y aurait nul besoin de cours ou tutoriels pour sa compréhension.

    Ta maîtrise technique est sans doute à la hauteur de l'opinion que tu te fais de toi même, il est cependant dommage que tu n'ai aucune appétence pour la pédagogie

    Mais bon, comme tu l'as toi-même fait remarqué, il y d'autres sources d'informations, heureusement ...

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    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 720
    Par défaut
    Citation Envoyé par scarou Voir le message
    Si la documentation seule suffisait à toute explication, il n'y aurait nul besoin de cours ou tutoriels pour sa compréhension.
    La documentation Python est beaucoup plus un tutoriel qu'une documentation technique a proprement parler. Si vous avez le courage de vouloir goûter la différence, allez feuilleter un peu la documentation de TCL/Tk.

    Citation Envoyé par scarou Voir le message
    Ta maîtrise technique est sans doute à la hauteur de l'opinion que tu te fais de toi même, il est cependant dommage que tu n'ai aucune appétence pour la pédagogie
    Lancer la console Python, avoir la curiosité de jouer avec writer.writerow, pour voir comment sont traités les iterables qu'on lui passe et relire la documentation pour voir si çà fait bien ce qu'on en a compris est le b.a.ba. qu'on doit avoir acquis lorsqu'on ne pose pas des questions de débutants.

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

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/02/2009, 13h32
  2. Réponses: 13
    Dernier message: 03/12/2008, 13h54
  3. problème de formatage de fichier CSV
    Par HA-MS dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/09/2007, 11h39
  4. Formatage d'un fichier .CSV
    Par Riko1 dans le forum Langage
    Réponses: 1
    Dernier message: 16/02/2007, 11h50
  5. Réponses: 4
    Dernier message: 11/05/2006, 11h14

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