Python格式化字符串中的"}"填充

5
Python 2.6 定义了 str.format(…),从 Python 3.0 开始,它被优先使用,而不是旧的 % 样式字符串格式化。然而,看着 "mini-language",似乎不可能使用 } 字符作为填充字符。
这对我来说似乎是一个奇怪的遗漏。有没有可能以某种方式转义该字符并将其用作填充字符?
我知道我可以用一些特定于字符串的字符进行填充,然后使用 str.replace 或任何其他类似的技巧来实现相同的结果,但那感觉像是一种 hack...
编辑:我的目的是像下面这样做:
>>> "The word is {0:}<10}".format("spam")
'The word is spam}}}}}}'

这不就像是在问:“为什么我不能在C字符串中使用\0?”我的意思是,这个问题有权被提出,但这种情况下会产生影响的边缘案例真的很奇特。 - Boldewyn
如果是 ) 并且你要自动生成 Lisp 代码,那么或许可以。但是花括号闭合符号呢? - Boldewyn
1
是的,这很深奥,也可能永远不会被使用。但是我有权好奇,对吧? (在C字符串中使用\0是可行的,只需要转义; 对我来说,在这种情况下没有任何可用的转义方式似乎很奇怪)。 - me_and
1
很不幸,我身边没有Python 2.6运行环境,但你尝试过"{0:\}<10}"或者"{0:" r'}' "<10"这两种方式吗?虽然文档明确指出“不允许使用 '}'”,但还是可以试一下,说不定会有用。 - Boldewyn
有人可以编辑一下这个问题,把关于“Python 3.0 旧式格式化”的部分改正一下吗?应该是“来自 Python 2.5 及更早版本”之类的。 - Peter Hansen
显示剩余3条评论
1个回答

8
您可以将其作为单独的参数进行指定,如下所示:
>>> "The word is {0:{1}<10}".format("spam", "}")
'The word is spam}}}}}}'

看,它被传递并用来代替{1}。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接