嵌套格式规范合法吗?

时间:2018-06-30 01:58:45

标签: python python-3.x python-2.7

最近,我遇到了以下奇怪情况。嵌套{}包围的格式字段似乎在Python 2.7和3.6中都可以使用,但是我在文档中找不到任何可以说明的信息。例如,在3.6和2.7上都得到以下结果:

>>> '{:{}.{}f}'.format(27.5, 6, 2)
' 27.50'

以前有人看过吗,这是预期的功能吗?通常,我会将其视作一个实现怪癖,甚至可能将其报告为错误。不过,有两件事:Python文档并不总是将所有信息放在我想要的位置,这是一个非常不错的功能。

1 个答案:

答案 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'
>>>