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')
是否可以在 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')