您可以使用str.format() method,它可以让您插入其他变量,例如宽度:
'Number {i}: {num:{field_size}.2f}'.format(i=i, num=num, field_size=field_size)
每个{} 都是一个占位符,从关键字参数中填充命名值(您也可以使用编号的位置参数)。可选的: 后面的部分给出了格式(基本上是format() 函数的第二个参数),您可以在那里使用更多的{} 占位符来填充参数。
使用编号的位置如下所示:
'Number {0}: {1:{2}.2f}'.format(i, num, field_size)
但您也可以将两者混合使用或选择不同的名称:
'Number {0}: {1:{width}.2f}'.format(i, num, width=field_size)
如果省略数字和名称,字段会自动编号,所以下面的格式等价于前面的格式:
'Number {}: {:{width}.2f}'.format(i, num, width=field_size)
请注意,整个字符串是一个模板,因此Number 字符串和冒号之类的内容是此处模板的一部分。
但是,您需要考虑到字段大小包括小数点;您可能需要调整大小以添加这 3 个额外字符。
演示:
>>> i = 3
>>> num = 25
>>> field_size = 7
>>> 'Number {i}: {num:{field_size}.2f}'.format(i=i, num=num, field_size=field_size)
'Number 3: 25.00'
最后但并非最不重要的一点是,在 Python 3.6 及更高版本中,您可以使用 formatted string literal 将变量直接放入字符串文字中:
f'Number {i}: {num:{field_size}.2f}'
使用常规字符串模板和str.format() 的优点是您可以换出模板,f-strings 的优点是可以在字符串值语法本身中内嵌非常易读和紧凑的字符串格式。