2014-09-03 108 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()那裏。

相關問題