最近,我遇到了一个奇怪的现象。嵌套{}-enclosed格式字段似乎在Python2.7和3.6中都能工作,但是我在文档中找不到任何应该这样做的东西。例如,我在3.6和2.7中都得到了以下结果:
>>> '{:{}.{}f}'.format(27.5, 6, 2)
' 27.50'以前有人见过这个吗,这是一个预定的功能吗?通常情况下,我会认为这是一个实现的怪癖,也许我会把它报告为一个bug。但是有两件事: Python文档并不总是把所有的信息都放在我要查找的地方,这是一个非常好的特性。
发布于 2018-06-30 02:06:31
在对“格式字符串语法”部分的介绍的末尾记录了这一点:
format_spec字段还可以包含嵌套的替换字段。这些嵌套替换字段可能包含字段名、转换标志和格式规范,但不允许进行更深层次的嵌套。在解释format_spec字符串之前,将替换format_spec中的替换字段。这允许动态指定值的格式设置。
这个特性的一些例子也可以在“格式示例”部分的末尾找到,例如:
>>> for align, text in zip('<^>', ['left', 'center', 'right']):
... '{0:{fill}{align}16}'.format(text, fill=align, align=align)
...
'left<<<<<<<<<<<<'
'^^^^^center^^^^^'
'>>>>>>>>>>>right'
>>>https://stackoverflow.com/questions/51111136
复制相似问题