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.