Bonjour,
Je vous explique mon problème, j'ai déclaré un dict, qui comporte plusieurs sous-dict. (C'est un code que j'avais fait il y a longtemps et j'avoue que j'ai du mal à me replonger de dans et peut être qu'un avis extérieur pourrait m'aider).
Le code ci-dessous permet de modifier un texte présent dans un dictionnaire (exemple : "Bonjour" devient "Bonsoir), le souci est que mon code fonctionnait suivant un sous-dict précisé et pas sur le dict complet.
Ma demande serait de pouvoir exécuter mon code sur le dictionnaire complet.
Pour executer le code que voici, j'insérais mon code dans un fichier nommé par exemple "conversion.py" puis dans un dossier enfant "toto" je créais un fichier nommé a.txt
Ensuite en tapant la commande depuis le dossier ou se trouve mon code : "python conversion.py toto/"
J'avais les modifications du sous_dict indiquées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 import re import os import sys dict = {'Dict1': {"Pomme": "Poire"}, 'Dict2': {"Banane": "Tomate"}, 'Dict3': {"fleur": "Arbre"},} def find_END(line): if re.search(r'\bFIN\b', line): return True else: return False def replacer_factory1(dictionary): def replacing(match): if len(dictionary) > 0: word = match.group() exchange = dictionary.get(word, word) return exchange else: return "" return replacing def replacing1(text, dict): regex_patt_list = r'\b(?:' + '|'.join(dict) + r')\b' replacer = replacer_factory1(dict) return re.sub(regex_patt_list, replacer, text) def folder(input,output): with open(sys.argv[1] + input) as fin: with open(sys.argv[1] + output, 'w') as fout: key = 0 sous_dict = dict["Dict3"] cache_mem = [] for line in fin: cache_mem.append(line) if find_END(line): #print(cache_mem) for x in cache_mem: if x.strip() in dict.keys(): key = x.strip() sous_dict = dict[key] fout.write(replacing1(x,sous_dict)) cache_mem = [] print(sys.argv[0]) result = os.listdir(sys.argv[1]) for x in result: folder(x, x + "V") print(result)
Partager