在 Python 3 中对多个项目使用相同的字符串格式

wig*_*ing 5 python format python-3.x

例如,我将以下数字分配给不同的变量:

a = 1.23981321; b = 34; c = 9.567123
Run Code Online (Sandbox Code Playgroud)

在打印这些变量之前,我将它们格式化为 4 个小数位:

'{:.4f} - {:.4f} - {:.4f}'.format(a, b, c)
Run Code Online (Sandbox Code Playgroud)

打印以下内容:

'1.2398 - 34.0000 - 9.5671'
Run Code Online (Sandbox Code Playgroud)

有没有办法声明一次来格式化所有值,而不是分配:.4f给每个占位符?{ }:.4f

Ffi*_*ydd 8

a = 1.23981321
b = 34
c = 9.567123

print('{:.4f} - {:.4f} - {:.4f}'.format(a, b, c)) # Original

print('{a:{f}} - {b:{f}} - {c:{f}}'.format(a=a, b=b, c=c, f='.4f')) # New
Run Code Online (Sandbox Code Playgroud)

{a}与位置参数相反,如果您使用关键字参数,则更容易实现,这样您就可以拥有。这允许您f = '.4f'在格式字符串中的多个位置使用该格式。

如果您需要保持简短,那么您可以混合位置和关键字参数(感谢 Martijn 的提示),并将您的 fmt 字符串放在单独的行上

fmt = '{:{f}} - {:{f}} - {:{f}}'
print(fmt.format(a, b, c, f='.4f'))
Run Code Online (Sandbox Code Playgroud)