如何为新的 python 格式选项设置可变精度
How to set variable precision for new python format option
我喜欢包含变量的字符串的新格式选项,但我想要一个变量来设置我的脚本的精度,但我不确定该怎么做。举个小例子:
a = 1.23456789
out_str = 'a = {0:.3f}'.format(a)
print(out_str)
现在这是我想用伪代码做的事情:
a = 1.23456789
some_precision = 5
out_str = 'a = {0:.(some_precision)f}'.format(a)
print(out_str)
但我不确定,是否可能,以及是否可能是语法的样子。
您可以嵌套占位符,其中嵌套的占位符可以在格式规范中的任何地方使用:
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
您也不能在字段名称中使用占位符(因此无法将值动态分配给槽)。
或者您可以使用编号。
a = 1.23456789
some_precision = 5
out_str = 'a = {0:.{1}f}'.format(a,some_precision)
print(out_str)
输出:
a = 1.23457
我喜欢包含变量的字符串的新格式选项,但我想要一个变量来设置我的脚本的精度,但我不确定该怎么做。举个小例子:
a = 1.23456789
out_str = 'a = {0:.3f}'.format(a)
print(out_str)
现在这是我想用伪代码做的事情:
a = 1.23456789
some_precision = 5
out_str = 'a = {0:.(some_precision)f}'.format(a)
print(out_str)
但我不确定,是否可能,以及是否可能是语法的样子。
您可以嵌套占位符,其中嵌套的占位符可以在格式规范中的任何地方使用:
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
您也不能在字段名称中使用占位符(因此无法将值动态分配给槽)。
或者您可以使用编号。
a = 1.23456789
some_precision = 5
out_str = 'a = {0:.{1}f}'.format(a,some_precision)
print(out_str)
输出:
a = 1.23457