2009-12-22 4 views
4

Python 2.6 définit str.format(…), qui, à partir de Python 3.0, est préféré à l'ancien style de formatage de chaîne %. En regardant le "mini-language", cependant, il semble qu'il est impossible d'utiliser le caractère } comme caractère de remplissage.Python Chaîne de format "}" fill

Cela me semble une étrange omission. Est-il possible d'échapper d'une manière ou d'une autre à ce personnage et de l'utiliser comme personnage de remplissage?

Je sais que je pourrais remplir avec un certain caractère unique à la chaîne, puis utiliser str.replace, ou un certain nombre d'autres astuces semblables pour obtenir le même résultat, mais qui se sent comme un hack pour moi ...

edit: ce que je suis après est quelque chose comme

>>> "The word is {0:}<10}".format("spam") 
'The word is spam}}}}}}' 
+0

N'est-ce pas: "Pourquoi ne puis-je pas utiliser \ 0 dans mes chaînes C?" Je veux dire, la question a son droit à être posée, mais les cas limites où cela aurait de l'importance sont vraiment ésotériques. – Boldewyn

+0

Si ce serait ')' et que vous généreriez automatiquement du code Lisp, peut-être, OK. Mais les accolades fermantes bouclées? – Boldewyn

+1

Oui, c'est ésotérique, et ne sera probablement jamais utilisé. Mais je suis autorisé à être curieux, non? (Et \ 0 dans les cordes C est possible, vous venez d'échapper le \, il me semble étrange qu'il n'y ait aucune échappatoire disponible dans cette situation). –

Répondre

7

Vous pouvez toujours spécifier comme paramètre séparé comme ceci:

>>> "The word is {0:{1}<10}".format("spam", "}") 
'The word is spam}}}}}}' 

Voir, il est transmis et utilisé à la place de {1}.