f 字符串,多个格式说明符

f-string, multiple format specifiers

是否可以在 Python f-string 中使用多个格式说明符?

例如,假设我们要将数字四舍五入到小数点后两位,并指定打印宽度。

单独来看是这样的:

In [1]: values = [12.1093, 13.95123]

In [2]: for v in values: print(f'{v:.2}')
1.2e+01
1.4e+01

In [3]: for v in values: print(f'{v:<10} value')
12.1093    value
13.95123   value

但是,是否可以将两者结合起来?

我试过了:

for v in values: print(f'{v:.2,<10} value')

但是我得到了无效的格式说明符错误

你想要

for v in values: print(f'{v:<10.2} value')

详细规则见Format String Syntax:

The general form of a standard format specifier is:

format_spec ::= [[fill]align][sign][#][0][width][grouping_option][.precision][type]

对于您的情况,您需要 [align] 和 [.precision]。

可以,但您需要先指定宽度,然后再指定精度。逗号是用来分隔千位的,这里不要用:

>>> for v in values: print(f'{v:<10.2} value')
1.2e+01    value
1.4e+01    value

根据您想要的结果,您可以将它们正常组合,例如;

for v in values: print(f"{v:<10.2} value")

#1.2e+01    value
#1.4e+01    value

但是,您的结果似乎不是您要查找的结果。

要强制使用 2 的固定表示法,您需要添加 f:

for v in values: print(f"{v:<10.2f} value")

#12.11      value
#13.95      value

您可以阅读有关格式规范的更多信息 here

Python 允许多个格式说明符。可以在 PEP 3101 – Advanced String Formatting.

上阅读对此的详细讨论

至于你的回答,要求的命令是

for v in values: print(f'{v:<10.2} value')