2012-05-08 167 views
9

如何使用變量來格式化變量?使用變量格式化python的格式化字符串

cart = {"pinapple": 1, "towel": 4, "lube": 1} 
column_width = max(len(item) for item in items) 
for item, qty in cart.items(): 
    print "{:column_width}: {}".format(item, qty) 

> ValueError: Invalid conversion specification 

(...): 
    print "{:"+str(column_width)+"}: {}".format(item, qty) 

> ValueError: Single '}' encountered in format string 

我能做些什麼,雖然是第一次構建格式化字符串,然後格式化:但是

(...): 
    formatter = "{:"+str(column_width)+"}: {}" 
    print formatter.format(item, qty) 

> lube : 1 
> towel : 4 
> pinapple: 1 

看起來笨拙。沒有更好的方法來處理這種情況嗎?已經解決了

回答

15

好了,問題,這裏以供將來參考答案:變量可以被嵌套,所以這個工作完全正常:

for item, qty in cart.items(): 
    print "{0:{1}} - {2}".format(item, column_width, qty) 
+1

是的,這是一個原因'.format()'是首選'%'格式的字符串 –

+0

@gnibbler:'%*'可以正常工作 – georg

+0

Afaik'%'被認爲不推薦使用,並且在未來版本的Python 3中將被刪除,儘管尚未公佈實際的最後期限。 –