You can nest占位符,其中嵌套占位符可以在格式规范中的任何位置使用:
out_str = 'a = {0:.{some_precision}f}'.format(a, some_precision=some_precision)
我在那里使用了命名占位符,但您也可以使用编号槽:
out_str = 'a = {0:.{1}f}'.format(a, some_precision)
还支持嵌套槽的自动编号(Python 2.7 及更高版本);编号仍然从左到右进行:
out_str = 'a = {0:.{}f}'.format(a, some_precision)
嵌套槽首先被填充;当前的实现允许您嵌套占位符最多 2 层,因此在占位符中使用占位符中的占位符不起作用:
>>> '{:.{}f}'.format(1.234, 2)
'1.23'
>>> '{:.{:{}}f}'.format(1.234, 2, 'd')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Max string recursion exceeded
您也不能在字段名称中使用占位符(因此不能动态分配值到槽)。