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 :

Ecrire dans u fichier .csv


Sujet :

Python

  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut Ecrire dans u fichier .csv
    Bonsoir tout le monde,

    Je suis presque arrivé à la fin de mon premier programme Python et je souhaiterai ajouter une fonction export qui permettrai de copier les valeurs des différentes Entry dans un fichier csv.

    Afin de me faciliter la tache j'ai créer une class permettant de choisir la case dans laquelle on souhaite recopier chacun des éléments simplement en l'appelant par sa lettre et son nombre correspondant (ex: A1).

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Choix:
            def act(self, case, text):
                    dico = {'A1': '', 'B1': ';', 'A2': '\n','B2': '\n;', 'A3': '\n\n', 'C1': ';;'}#et ainsi de suite
                    return dico[case] + str(text)
    Pour écrire le premier caractère ce code ne pose aucun problème.
    Le souci viens lorsque que l'on veut écrire par exemple dans la ligne 3 alors que l'on vient d'écrire dans la ligne 2.

    En effet dans ce cas de figure le double saut (\n\n) s'effectue à partir du dernier caractère enregistré, c'est à dire à la ligne 2 par exemple. L'écriture se fait alors en ligne 5. A priori le problème sera le même avec des sauts de colonnes.

    Je me pose alors deux questions pour résoudre ce problème:
    1°) Est-il possible de forcer l'écriture pour que l'origine soit systématiquement A1?

    2°) Y-a-t-il une solution pour faire l'inverse de "\n" et ";" (cad des retours en arrière)?


    Merci pour votre aide et bonne soirée à tous.

    Jiyuu

  2. #2
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    Citation Envoyé par Jiyuu Voir le message
    2°) Y-a-t-il une solution pour faire l'inverse de "\n" et ";" (cad des retours en arrière)?
    Salut, j'ai pas bien capté ton problème sauf je crois pour la deuxième question... si tu veux entre deux retours à la ligne puis en supprimer 1 derrière, pourquoi ne pas tout simplement en écrire qu'un dès le départ ? sinon pour suprimer le dernier caractère tu peux faire txt=txt[:-1], si c'est pour supprimer un caractère précis qui n'est qu'une seule fois dans ton string :
    idx=txt.index('Ton_Caractère ou chaîne')
    txt=txt[:idx]+txt[idx+1:]

    Et enfin, si c'est pour retirer carrément un chaine de carac, alors il faudra recup dans une variable la longueur de la chaîne et ajuster en consequence la ligne txt=txt[...etc...etc... j'éspère avoir pu t'aider

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Pour synthétiser le but est de pouvoir choisir la case où l'on souhaite écrire (exemple: A ou B2...)

    Pour ça j'ai fait le code que j'ai donné et qui fonctionne impec lorsque l'on rempli la première case, peu importe où elle se trouve.

    Par contre si j'ai écrit dans la case C5 par exemple, aujourd'hui je ne sais pas écrire dans les cases situées en lignes 1, 2, 3 et 4.
    Ceci vient du fait que l'écriture se fait toujours après le dernier caractère écrit.

    Je me demandais donc s'il était possible de tout le temps repartir au début du doc ou s'il existait une astuce permettant de dire au programme 'tu dois écrire dans la ligne qui se trouve avant la dernière)...

    Peut-être que la solution est de faire une boucle qui vérifiera s'il y a déjà des éléments dans quel cas on recopie tout dans le bon ordre. (j'ai peur que ça devienne un peu compliqué).

Discussions similaires

  1. Ecrire dans un fichier CSV
    Par Vanito dans le forum Général Java
    Réponses: 5
    Dernier message: 01/09/2011, 09h24
  2. [PHP 5.0] [CSV] Ecrire dans un fichier CSV sur un serveur
    Par math_thefire dans le forum Langage
    Réponses: 13
    Dernier message: 17/04/2009, 16h44
  3. Réponses: 8
    Dernier message: 08/12/2007, 15h21
  4. ecrire dans un fichier csv ou ods (xls)
    Par afrodje dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/04/2007, 16h45
  5. Ecrire dans un fichier .csv ou .txt à partir d'excel
    Par Beamish dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 02/03/2007, 12h16

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