2012-05-08 39 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の将来のバージョンでは削除されます。 –