Bonjour,

Je débute en python et ma question va peut être paraitre simple mais j'ai du mal à trouver la solution. J'ai donc décidé de me tourner vers vous. Voila mon problème.

Ce que je cherche à faire (du moins la partie bloquante) c'est modifier les expressions d'un fichier afin quelles corresponde à un "standard".
Pour cela, je procède de la manière suivante :
  • je demande à l'utilisateur le nom de son expression a, b, c...
  • J'ajoute ces expressions dans un dictionnaire et j'ajoute la clef correspondante (variable mise en forme)
  • j'ouvre le fichier et je le lit
  • je remplace les expressions a, b,c.. par les clefs correpondantes en les vérifiant une à une dans une boucle for
  • j'écris la nouvelle chaine dans le fichier


Si cela n'est pas clair, voila le bout de programme :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
f = open(fichier,"r")
chaine= f.read()
for cle in index:
    chaine = chaine.replace(cle, index[cle])
f.close
f=open(fichier,"w")
f.write(chaine)
f.close()
Le code compile et s’exécute. Mon soucis est que si deux expressions se ressemblent, elles sont modifiées deux fois.
Par exemple l'utilisateur me donne :
  • expression a = Maman
  • expression b = Mama

Que je remplace respectivement par _L_Maman et _L_Mama et bien si Maman se trouve dans le fichier à traiter il deviendra d'abord _L_Maman puis _L__LMama par exemple puisqu'il sera remplacé par les deux clefs.
Je ne sais pas si je suis très clair dans le cas contraire n'hésiter pas à me le dire j'essaierais d'expliquer différemment.

Comment éviter ce probleme existe t il un moyen de faire quelque chose du style string.replace(option=expression_exact) ? Ou vaudrait il mieux passer par les regex ?

Merci d'avance pour votre aide.