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
    Futur Membre du Club
    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
    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
    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
    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...

###raw>template_hook.ano_emploi###