PrettyTable

Il modulo PrettyTable permette di manipolare tabelle di dati e in particolare di visualizzarle con tanto di cornice!

Per usare il modulo, prima devi installarlo con

pip install prettytable

Poi crea una tabella da manipolare

import prettytable as pt
...
t=pt.PrettyTable()
...

Costanti

  1. pt.ALL
  2. pt.DEFAULT
  3. pt.DOUBLE_BORDER
  4. pt.FRAME
  5. pt.HEADER
  6. pt.MARKDOWN
  7. pt.MSWORD_FRIENDLY
  8. pt.NONE
  9. pt.ORGMODE
  10. pt.PLAIN_COLUMNS
  11. pt.SINGLE_BORDER

Attributi

  1. t.align=...
  2. t.border=...
  3. t.field_names=...
  4. t.float_format=...
  5. t.header=...

Funzioni predefinite

  1. print(t)

Funzioni

  1. pt.from_csv()

Metodi

  1. t.add_column(...)
  2. t.add_row(...)
  3. t.add_rows(...)
  4. t.clear()
  5. t.clear_rows()
  6. t.copy()
  7. t.del_column(...)
  8. t.del_row(...)
  9. t.get_string(...)
  10. t.get_html_string(...)
  11. t.get_json_string
  12. t.set_style(...)

Stili predefiniti

Il metodo set_style() permette di scegliere uno stile predefinito per la cornice della tabella

  • DEFAULT, utilizza i caratteri più, meno e pipe
  • DOUBLE_BORDER, bordo doppio
  • MARKDOWN, sintassi Markdown
  • MSWORD_FRIENDLY, utilizza solo il carattere pipe (simile a MS Word?)
  • ORGMODE, sintassi Org mode
  • PLAIN_COLUMNS, senza bordo
  • SINGLE_BORDER, bordo singolo
t.set_style(pt.DOUBLE_BORDER)

Attributi di stile

Si imposta il singolo attributo della tabella dopo averla creata

...
t=pt.PrettyTable()
t.header=False
...

oppure si assegna un valore agli attributi quando si richiama il costruttore

t=pt.PrettyTable(header=False, ...)

oppure si interviene sulla singola tabella appena prima di stamparla, passando per il metodo get_string()

print(t.get_string(header=False, ...))

Sono disponibili attributi per impostare ogni singolo aspetto della tabella

Visibilità

  • t.border, cornice visibile, sì o no? (True / False)
  • t.header, intestazioni visibili, sì o no? (True / False)

Allineamenti

  1. t.align, allineamento a sinistra / centro / destra (“l” / “c” / “r“)
  2. t.align["nome"], allineamento del campo specificato a sinistra / centro / destra (“l” / “c” / “r“)
  3. t.header_align, allineamento delle intestazioni a sinistra / centro / destra (“l” / “c” / “r“)
  4. t.header_align["nome"], allineamento dell’intestazione con nome a sinistra / centro / destra (“l” / “c” / “r“)
  5. t.valign, allineamento verticale in alto / al centro / in basso (“t” / “m” / “b“)
  6. t.valign["nome"], allineamento verticale del campo specificato in alto / al centro / in basso (“t” / “m” / “b“)

Caratteri

  1. t.horizontal_char, …
  2. t.vertical_char, …

Formattazione numeri

  1. t.float_format, accetta una stringa di formattazione, come print()
  2. t.int_format, accetta una stringa di formattazione, come print()

Ordinamento

  1. t.reversesort, ordinamento decrescente (True / False)
  2. t.sortby, la tabella verrà mantenuta ordinata rispetto al campo specificato
    Con sort_key si può specificare un criterio (funzione) di ordinamento…
  3. t.sortby=None, annulla l’ordinamento

Inserire i dati

Dopo aver specificato i nomi dei campi, con una lista di stringhe

t.field_names=[ "nome1", "nome2", ... ]

si può inserire una riga, con una lista di valori

t.add_row([ valore1, valore2, ... ])

oppure tante righe, con una lista di liste di valori

t.add_rows(
    [ 
       [ valore11, valore12, ... ],
       [ valore21, valore22, ... ],
       ...
    ]
)

Si può inserire una colonna dopo l’altra (con nome del campo e lista dei valori)

t.add_column( "nome1", [ valore11, valore21, ... ] )
t.add_column( "nome2", [ valore12, valore22, ... ] )
...

CSV

La funzione del modulo from_csv() legge i dati di un file CSV e crea la tabella

import prettytable as pt

with open("nomefile.csv") as f:
    t = pt.from_csv(f)

print(t)

Database

Se i dati sono in un database accessibile secondo il protocollo Python DB-API allora si usa la funzione from_db_cursor()

Eliminare i dati

  • t.del_row(...), elimina la riga di indice n
  • t.del_column(...), elimina la colonna con “nome”
  • t.clear_rows(), elimina tutte le righe ma rimane la riga di intestazione
  • t.clear(), elimina tutto ma rimangono le impostazioni già fatte

Esportare i dati

Il metodo t.get_string() restituisce la tabella nel formato con cui verrebbe stampata da print()

t2=t1.get_string()

Il metodo t.copy() restituisce una copia completa e indipendente della tabella

t2=t1.copy(t1)

Con la tecnica dello slicing si può creare una nuova tabella con le righe a piacere

t2=t1[...]               # START, STOP, STEP...

I formati più diffusi del web?

t2=t1.get_html_string()  # Codice HTML, con tutti i tag necessari
                         # Accetta molte manipolazioni...
t2=t1.get_json_string()  # Formato JSON

Selezionare i dati

Il metodo t.get_string() accetta degli argomenti con nome che permettono di selezionare o manipolare i dati nella tabella

  • fields=..., una lista con i nomi dei campi
  • sortby=..., il nome del campo
  • sortby=..., il nome del campo
  • start=..., l’indice della riga di partenza
  • end=..., l’indice della riga esclusa
print(t.get_string(fields=["nome1", "nome2", ...]))         # Solo le colonne specificate

print(t.get_string(sortby="nome_campo"))                    # In ordine crescente rispetto al campo ...
print(t.get_string(sortby="nome_campo", reversesort=True))  # In ordine decrescente rispetto al campo ...

print(t.get_string(start=indice))                           # A partire dalla riga ...
print(t.get_string(end=indice))                             # Fino alla riga prima di ...
print(t.get_string(start=indice1, end=indice2))             # A partire dalla riga ... fino alla riga prima di ...

RISORSE ONLINE

  1. GitHub > prettytable
  2. PyPi > prettytable
  3. GeeksforGeeks > prettytable