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

Kev*_*aft 8 python string format rounding

我想打印看起来像这样的东西:

您好| 7.16

这是我正在使用的代码

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

但我得到错误:

ValueError: cannot switch from automatic field numbering to manual field specification
Run Code Online (Sandbox Code Playgroud)

如果我尝试:

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

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

KeyError: 's'
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以用圆形浮点数打印变量字符串?还是有类似%s我应该使用的东西?

Mar*_*ers 20

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

由于您无法.2f在字符串对象上使用该格式,因此会出现错误.

删除0:

print "{}  ¦  {:.2f}".format(MyString, MyFloat)
Run Code Online (Sandbox Code Playgroud)

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

print "{}  ¦  {1:.2f}".format(MyString, MyFloat)
Run Code Online (Sandbox Code Playgroud)

如果您选择后者,最好一致地显示并0用于第一个占位符:

print "{0}  ¦  {1:.2f}".format(MyString, MyFloat)
Run Code Online (Sandbox Code Playgroud)

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

print "{s}  ¦  {f:.2f}".format(s=MyString, f=MyFloat)
Run Code Online (Sandbox Code Playgroud)

注意str.format()那里的关键字参数.