2014-09-03 107 views
6

我要打印的东西,看起来像这样:使用.format()打印一个变量字符串和圆形数字

你好| 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

回答

16

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

由于不能在字符串对象上使用.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) 

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

相关问题