如何使用变量格式化变量?
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
但是,看起来很笨拙。是不是有更好的方法来处理这种情况?
答案 0 :(得分:17)
好的,问题已经解决了,这是未来参考的答案:变量可以嵌套,所以这很好用:
for item, qty in cart.items():
print "{0:{1}} - {2}".format(item, column_width, qty)
答案 1 :(得分:0)
由于 python 3.6 ,您可以使用 f-strings 来实现更简洁的实现:
>>> things = {"car": 4, "airplane": 1, "house": 2}
>>> width = max(len(thing) for thing in things)
>>> for thing, quantity in things.items():
... print(f"{thing:{width}} : {quantity}")
...
car : 4
airplane : 1
house : 2
>>>