2011-02-25 18 views
9

Qual è il modo migliore per stampare dati tabulari in Python? Supponiamo che i dati siano in una lista 2D e voglio creare una tabella dall'aspetto intelligente. Quello che effettivamente ho è un elenco di dizionari e voglio stampare un'intersezione a seconda dei valori nei dizionari. Qualcosa comeStampa dati tabulari in Python

for val1 in my_dict: 
    for val2 in my_dict: 
    if val1['a'] > val2['a']: 
     print 'x' 

ma in modo tale che ogni colonna sia a larghezza fissa. Le classi Writter e Formatter sembrano qualcosa nel regno delle possibilità, ma sembrano ancora complesse da usare rispetto, ad esempio, al formattatore di Perl.

Esistono implementazioni esistenti o devo scrivere da solo?

+0

Penso che si potrebbe voler provare pprint (sì, due 'p'). Non lo uso ma ho visto altri utilizzarlo in situazioni simili e quindi suona un campanello qui – inspectorG4dget

+0

Ho visto pprint, ma non riesco a vedere come usarlo nel modo in cui ho bisogno. – Makis

+0

Il possibile duplicato ha più voti e risposte: http://stackoverflow.com/questions/9535954/python-printing-lists-as-tabular-data. Fornisci sempre esempi di output desiderati =) –

risposta

9

Conosci lo PyPi?

DataGrid e PrettyTable sembrano due buone alternative che ho trovato con una ricerca breve. Potrebbe essere necessario assemblare i dati nel formato che si desidera (con "x" per quando la condizione è vera) prima di inviarlo alle routine fornite.

13
print "%20s" % somevar 

Stampa il valore "somevar" e utilizza fino a 20 spazi. Aggiungere una virgola dietro l'affermazione di stampa al fine di evitare la linea-break - e, naturalmente: leggere il string formatting operations docs sull'operatore '%'

6

Qui ci sono due modi di scrivere una tabella di quadrati e cubi:

for x in range(1, 11): 
    print repr(x).rjust(2), repr(x*x).rjust(3),print repr(x*x*x).rjust(4) 

for x in range(1,11): 
    print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x) 

Controllare this per dettagli.

0

Tabulate è un altro pacchetto che non è stato ancora menzionato per gestire questo tipo di attività. Una buona caratteristica è che funziona bene con i datafram Pandas.