2012-05-08 45 views
9

Làm cách nào để sử dụng các biến để định dạng các biến của tôi?Định dạng chuỗi trong python với định dạng biến

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 

hoặc

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

> ValueError: Single '}' encountered in format string 

Những gì tôi có thể làm, tuy nhiên, là lần đầu tiên để xây dựng chuỗi định dạng và sau đó định dạng nó:

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

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

Trông vụng về, tuy nhiên. Không có cách nào tốt hơn để xử lý loại tình huống này?

Trả lời

15

Được rồi, vấn đề giải quyết đã có, đây là câu trả lời để tham khảo trong tương lai: các biến thể được lồng vào nhau, vì vậy điều này làm việc hoàn toàn tốt đẹp:

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

Vâng, đây là một trong những lý do mà '.format()' là ưu tiên cho các chuỗi định dạng '%' –

+0

@gnibbler: '% *' hoạt động tốt – georg

+0

Afaik '%' được coi là không dùng nữa và sẽ bị xóa trong các phiên bản tương lai của Python 3, mặc dù chưa có thời hạn thực tế nào được công bố. –

Các vấn đề liên quan