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()那里的关键字参数.