使用.format()打印变量字符串和舍入数字

时间:2014-09-03 18:08:24

标签: python string format rounding

我想要打印出这样的内容:

您好| 7.16

这是我正在使用的代码

MyString = 'Hello'
MyFloat = 7.157777777
print "{}  ¦  {0:.2f}".format(MyString, MyFloat)

但我收到错误:

ValueError: cannot switch from automatic field numbering to manual field specification

如果我尝试:

MyString = 'Hello'
MyFloat = 7.157777777
print "{s}  ¦  {0:.2f}".format(MyString, MyFloat)

或str而不是s我收到错误:

KeyError: 's'

我是如何使用圆形浮点打印变量字符串的?或者我应该使用%s这样的东西吗?

1 个答案:

答案 0 :(得分:20)

您在第二个字段中使用编号的参考; 0表示您要使用传递给str.format()的第一个参数(例如MyString),而不是参数MyFloat的{​​{1}}值。

由于您无法在字符串对象上使用1格式,因此会收到错误。

删除.2f

0

由于没有名称或索引号的字段是自动编号的,或使用正确的数字:

print "{}  ¦  {:.2f}".format(MyString, MyFloat)

如果您选择后者,最好始终明确表示并使用print "{} ¦ {1:.2f}".format(MyString, MyFloat) 作为第一个占位符:

0

另一种选择是使用命名引用:

print "{0}  ¦  {1:.2f}".format(MyString, MyFloat)

请注意print "{s} ¦ {f:.2f}".format(s=MyString, f=MyFloat) 的关键字参数。