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 :

Parse fichier en dictionnaire


Sujet :

Python

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Parse fichier en dictionnaire
    Bonjour,
    je souhaiterai parser les lignes d'un fichier et stocker les éléments sous forme d'un dictionnaire et ensuite écrire ces éléments dans un autre fichier.

    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
    def parse(fichier):
    #Fonction qui parse et organise les données dans un dictionnaire
          with open (fichier,"r") as f:
              dico={}
              for line in f.readlines():
                  linesplit=line.split("\t")
                  dico["x"]=linesplit[0]
                  dico["y"]=linesplit[1]
                  dico["w"]=linesplit[2]
                  dico["z"]=linesplit[3]
                  dico["z1"]=linesplit[4].strip("\n")
                  print(dico)
              with open ("convert", "w") as g:
                  g.write(f"{dico}")
    Mon problème est que le print affiche bien un dictionnaire pour chaque ligne de mon fichier d'entrée.
    Par lors de l'écriture dans le fichier, je n'ai qu'un seul dictionnaire correspondant à une seule ligne du fichier d'entrée.

    Merci d'avance pour votre aide

  2. #2
    Membre régulier
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Points : 85
    Points
    85
    Par défaut
    Salut,
    c'est que tu essayes d'écrire à chaque lecture de ligne la totalité de ce que tu souhaites obtenir. Tu as besoin d'une étape supplémentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def parse(fichier):
    #Fonction qui parse et organise les données dans un dictionnaire
          with open (fichier,"r") as f:
              dico= dict()
              linesplit = list()
              for line in f.readlines():
                  linesplit.append(line.strip("\n"))
              with open ("convert.txt", "w") as g:
                  dico["x"]=linesplit[0]
                  dico["y"]=linesplit[1]
                  dico["w"]=linesplit[2]
                  dico["z"]=linesplit[3]
                  dico["z1"]=linesplit[4]
                  g.write(f"{dico}")
    vue de mon oeil à moi

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par m01x75 Voir le message
    Par lors de l'écriture dans le fichier, je n'ai qu'un seul dictionnaire correspondant à une seule ligne du fichier d'entrée.
    Vous créez un nouveau fichier à chaque itération... A la fin, seul le dernier dictionnaire sera présent.
    Ce qui pourrait être corrigé en ouvrant le fichier une seule fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
          with open (fichier,"r") as f, open ("convert", "w") as g:
              dico={}
              for line in f.readlines():
                  linesplit=line.split("\t")
                  dico["x"]=linesplit[0]
                  dico["y"]=linesplit[1]
                  dico["w"]=linesplit[2]
                  dico["z"]=linesplit[3]
                  dico["z1"]=linesplit[4].strip("\n")
                  print(dico)
                  g.write(f"{dico}")
    ou en l'ouvrant en mode "append":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       with open (fichier,"r") as f:
              dico={}
              for line in f.readlines():
                  linesplit=line.split("\t")
                  dico["x"]=linesplit[0]
                  dico["y"]=linesplit[1]
                  dico["w"]=linesplit[2]
                  dico["z"]=linesplit[3]
                  dico["z1"]=linesplit[4].strip("\n")
                  print(dico)
              with open ("convert", "a") as g:
                  g.write(f"{dico}")
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre régulier
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Vous créez un nouveau fichier à chaque itération... A la fin, seul le dernier dictionnaire sera présent.
    Ce qui pourrait être corrigé en ouvrant le fichier une seule fois:
    - W
    Oups je l'avais pas vu...

Discussions similaires

  1. Parsing fichier CSV
    Par tnarol dans le forum C++
    Réponses: 8
    Dernier message: 11/03/2008, 15h50
  2. parsing fichier et nombres avec regex
    Par seth.legoauld dans le forum Langage
    Réponses: 2
    Dernier message: 30/10/2007, 00h17
  3. Réponses: 13
    Dernier message: 03/09/2007, 23h21
  4. Réponses: 9
    Dernier message: 06/12/2006, 00h41
  5. script pour parsing fichier xml
    Par Melvine dans le forum Modules
    Réponses: 4
    Dernier message: 06/10/2006, 18h47

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