2012-05-08 18 views
9

Come posso utilizzare le variabili per formattare le variabili?Formato stringa in python con formattazione variabile

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 

o

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

> ValueError: Single '}' encountered in format string 

Cosa posso fare, però, è prima di costruire la stringa di formattazione e quindi formattarlo:

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

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

Sembra goffo, però. Non c'è un modo migliore per gestire questo tipo di situazione?

risposta

15

Ok, problema risolto già, ecco la risposta di riferimento futuro: le variabili possono essere nidificate, quindi questo funziona perfettamente bene:

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

Sì, questo è uno dei motivi per cui '.format()' è preferito per '%' formattare le stringhe –

+0

@gnibbler: '% *' funziona bene – georg

+0

Afaik '%' è considerato deprecato e verrà rimosso nelle future versioni di Python 3, sebbene non sia stata ancora annunciata alcuna scadenza effettiva. –

Problemi correlati