2012-05-08 118 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中将被删除,尽管尚未公布实际的最后期限。 –