Dictionnaire à partir d'un fichier txt

Fermé
stanis - Modifié le 25 nov. 2021 à 19:00
 douba - 24 nov. 2021 à 16:47
Bonjour,

Je voudrais créer un dictionnaire à partir d'un fichier texte (bloc-notes) :

Peter 100 35 35 50 15 light
Ivan 45 49 49 45 65 cut
Salem 39 52 43 65 55 light
Clara 44 48 65 43 57 swim
Tara 30 56 35 72 30 strenght
Alice 50 10 20 80 15
Cachou 35 55 30 90 45 cut
Roux 40 45 40 56 35


dont la structure est de la forme :

Name HP Attack Defense Speed Size Abilities


Pour l'instant j''arrive à ce que le code me renvoie ceci :

{'name': 'Peter', 'hp': '100', 'Attack': '35', 'Defense': '35', 'Speed': '50', 'Size': '15', 'Abilities': 'light'}


Mais le problème c'est que il me renvoie n fois ca et changer de personnage , il renvoie toujours la même valeurs n fois. Je voudrais savoir comment faire pour pouvoir avoir la même chose mais pour tout les personnages.

Mon code : (il doit sûrement contenir plein d'erreurs, je n'ai jamais utilisé de fichier en python) :

import re

f = open("annexe.txt","r")
r = f.read()
f.close()
m = r.split("\n")
n = re.split('\n| ' , r)

def personnage():
    for i in range(len(m)):
        keys_list = ['name', "hp","Attack","Defense","Speed","Size","Abilities" ]
        dict_from_list = dict(zip(keys_list,n))
        print(dict_from_list)

1 réponse

Salut,

Ton fichier étant un csv, autant utiliser le module dédié de python à cet usage.

import csv

with open('plop.csv') as f:
    keys_list = ['name', "hp","Attack","Defense","Speed","Size","Abilities" ]
    persos = csv.DictReader(f, delimiter=' ', fieldnames=keys_list)
    for perso in persos:
        print(perso['name'], perso['Abilities'])


Ceux pour lesquels une colonne est non spécifiée, abilities ici, il est spécifié
None
.
0