Transformer des variables en dictionnaire sous Python

Fabrice -  
 Fabrice -
Bonjour,

J'ai référencé plusieurs centaines de variables dans un fichier ayant chacune une valeur.
Ces variables commences toutes par le même modèle : "AB" exemple "AB1= pomme", "AB2= carotte", etc..
Et j'aimerais pouvoir mettre toutes ces variables dans un dictionnaire. Pour pouvoir récupérer les valeurs sans être obligé de rentrer chaque "AB" dans mon dictionnaire.

Avez vous des idées ?

Merci d'avance

Configuration: Windows / Edge 18.17763
A voir également:

3 réponses

jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
Bonjour,

Et où se situe exactement ton problème ?

Car cela semble simple, une boucle qui lit un fichier texte et qui découpe la ligne en 2 pour initialiser clé et valeur du dictionnaire.
1
Fabrice
 
Pour être plus précis, voici mon code :

import re
repldict = {'bonjour':'bonsoir'}
            def replfunc(match):
    return repldict[match.group(0)]

regex = re.compile('|'.join(re.escape(x) for x in repldict))
with open('a.txt') as fin, open('b.txt','w') as fout:
    for line in fin:
        fout.write(regex.sub(replfunc,line))

Il me permet de modifier le texte de mon fichier a.txt sur le fichier b.txt par rapport à ce que j'ai indiqué dans mon dictionnaire.

Le souci c'est que j'ai déjà un dictionnaire de créer dans un autre fichier ou j'ai associé plusieurs centaines de variables à une valeur (exemple A1 = "bonjour").

J'aimerais dans un premier temps pouvoir récupérer toutes ces variables, et ensuite pouvoir leur associer une clé (j'ai commencé à regarder au niveau des tuples).

On aurait par exemple pour la clé "P1" la variable "A1" qui renvoie "bonjour" et pour la clé "P2" la même variable "A1" mais qui revoie "bonsoir".

J'ai essayé de faire au mieux pour expliquer mon problème mais j'avoue que je bloque un peu..

Merci pour ton aide.
1
jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
Je n'ai pas beaucoup plus saisi ;-)

pour charger un dictionnaire depuis un fichier, tu peux avoir quelque chose comme
dict = {}
with open("dict0.txt") as fichier:
    for ligne in fichier:
        ligne=ligne.rstrip()
        cleval=ligne.split("=")
        dict[cleval[0]] = cleval[1]
print(dict)
0
Fabrice
 
Merci beaucoup pour ton message ça m'aide déjà beaucoup.

Le dernier point qui me pose problème c'est qu'un même mot peut être présent plusieurs fois à des endroits différents. Mais j'aimerai que ce mot en fonction de sa position ne devienne pas le même mot.

Par exemple si le mot "test" est présent 15 fois dans le texte. J'aimerais que la première fois il devienne "bonjour" mais que les autres fois il devienne "bonsoir".

Voilà l'idée.
J'ai pensé à des dictionnaires, dans des dictionnaires avec des clés différentes en fonction du dictionnaire. Mais je ne sais pas si cela est réalisable.

Merci encore.
0
jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
je n'ai toujours pas saisi ce que tu veux faire ...
0
Fabrice > jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention  
 
Avec ce code :

import re
remplacement_dict = {"A":{'fruit':'pomme','frut':'poulpe'}, "B":{'fruit':'poire','pistache': 'tomate'}}



with open("a.txt") as fichier, open("b.txt", "w") as nouveaufichier:
 texte = fichier.read()
# texte = texte.replace(remplacement_dict['A'][0], remplacement_dict['A'][1])

def replfunc(match):
 return remplacement_dict[match.group(0)]

regex = re.compile('|'.join(re.escape(x) for x in remplacement_dict))
with open('a.txt') as fin, open('b.txt', 'w') as fout:
 for line in fin:
  fout.write(regex.sub(replfunc, line))


J'aimerai pouvoir choisir entre ma liste "A" ou ma liste "B" et remplacer les mots en fonction de cette liste.
Je pense que ça se joue au niveau de ligne [match.group(0)], mais je ne parviens pas à trouver de solution...
0
jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720 > Fabrice
 
je passe mon tour, car n'arrivant toujours pas à entrevoir ce que tu cherches à obtenir.
0
Fabrice > jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention  
 
Merci quand même pour ton aide.
0