2009-08-31 24 views

risposta

18

Se si conoscono le lunghezze massime di dati nelle due colonne, è possibile utilizzare i qualificatori di formato. Per esempio, se il nome è lungo al massimo 20 caratteri e il prezzo sarà adattarsi a 10 caratteri, si potrebbe fare

print "Name: %-20s Price: %10d" % (i.name, i.price) 

Questo è meglio che usare le schede come le schede non si allineeranno in alcune circostanze (ad esempio, se uno il nome è un po 'più lungo di un altro).

Se alcuni nomi non si adattano allo spazio utilizzabile, è possibile utilizzare il qualificatore di formato . per troncare i dati. Ad esempio, l'utilizzo di "% -20.20s" per il formato del nome troncerà i nomi più lunghi per adattarsi alla colonna di 20 caratteri.

+0

Eccellente. Un altro promemoria per me di una funzione che uso raramente in python. Avevo già avuto questo problema in precedenza e l'ho risolto con le schede. Ora posso tornare indietro e rendere il mio codice più facile da leggere. –

9

Come ha detto Vinay, utilizzare gli specificatori di formato stringa.

Se non si conoscono le lunghezze massime, è possibile trovarli facendo un passaggio extra attraverso la lista:

maxn, maxp = 0, 0 
for item in items: 
    maxn = max(maxn, len(item.name)) 
    maxp = max(maxp, len(str(item.price))) 

quindi utilizzare '*' al posto del numero e fornire la larghezza calcolata come argomento.

for item in items: 
    print "Name: %-*s Price: %*d" % (maxn, item.name, maxp, item.price) 
0

È anche possibile utilizzare i metodi rjust()/ljust() per gli oggetti str.

Problemi correlati