Intéraction entre "{}" d'une regex et "{}" d'un formatage string
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:
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.