Bonjour à tous
Comme dit dans le titre, j'essaye d'inclure un formatage type "{}" dans une regex or comme la regex interprète le "{}" à sa façon ben je ne m'en sors pas
Exemple: j'ai une string de ce type chaine="123ttt456". Je veux remplacer tous les "t" par un simple "x".
La regex de base: print(re.sub(r"t{1,3}", r"x", chaine)) => ok, pas de souci.
Maintenant je veux paramétrer mon nombre de "t" (aujourd'hui 3, demain 18). J'écris ma regex de cette façon: print(re.sub(r"t{1,%d}" % 3, r"x", chaine)) => là aussi ok.
Mais maintenant je voudrais écrire mon formatage string à la méthode "format()". Et là quand j'écris print(re.sub(r"t{1,{0}}".format(3), r"x", chaine)) il plante avec un "ValueError: unexpected '{' in field name". Je sens bien qu'il y a un souci avec les accolades mais j'ai tenté du backslash etc sans trop de résultat probant. Donc je ne vois pas trop où ça pêche et comment l'arranger.
Quelqu'un aurait-il une solution?
Code complet pour ceux qui voudraient tester
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #!/usr/bin/env python3 # coding: utf-8 import re chaine="123ttt456" print(re.sub(r"t{1,3}", r"x", chaine)) print(re.sub(r"t{1,%d}" % 3, r"x", chaine)) print(re.sub(r"t{1,{0}}".format(3), r"x", chaine))
Merci à tous.
Partager