最近,我遇到了以下奇怪情况。嵌套{}
包围的格式字段似乎在Python 2.7和3.6中都可以使用,但是我在文档中找不到任何可以说明的信息。例如,在3.6和2.7上都得到以下结果:
>>> '{:{}.{}f}'.format(27.5, 6, 2)
' 27.50'
以前有人看过吗,这是预期的功能吗?通常,我会将其视作一个实现怪癖,甚至可能将其报告为错误。不过,有两件事:Python文档并不总是将所有信息放在我想要的位置,这是一个非常不错的功能。
答案 0 :(得分:17)
在"Format String Syntax"部分的简介末尾有记录:
format_spec 字段中也可以包含嵌套的替换字段。这些嵌套的替换字段可能包含字段名称,转换标志和格式说明,但不允许更深层的嵌套。在解释 format_spec 字符串之前,将替换format_spec中的替换字段。这样可以动态指定值的格式。
此功能的一些示例也可以在"Format examples"部分的末尾找到,例如:
>>> for align, text in zip('<^>', ['left', 'center', 'right']):
... '{0:{fill}{align}16}'.format(text, fill=align, align=align)
...
'left<<<<<<<<<<<<'
'^^^^^center^^^^^'
'>>>>>>>>>>>right'
>>>