Python Format

Da Andreabont's Wiki.

Le stringhe di python supportano il metodo format che permette la sostituzione di appositi token posti nella stringa con i valori delle variabili passate.

Sostituzione tramite segnaposto

Sostituzione posizionale

"Primo {} {}".format("secondo", "terzo") # Ritorna "Primo secondo terzo"

Sostituzione per indice

"Primo {1} {0}".format("secondo", "terzo") # Ritorna "Primo terzo secondo"

Sostituzione per nome

"Primo {uno} {due}".format(uno="secondo", due="terzo") # Ritorna "Primo secondo terzo"

Sostituzione per nome da un dizionario

dizionario = {"uno":"secondo", "due":"terzo"}

"Primo {uno} {due}".format(**dizionario) # Ritorna "Primo secondo terzo"
"Primo {0[uno]} {0[due]}".format(dizionario) # Ritorna "Primo secondo terzo"

Riempimento per raggiungere una dimensione fissa

Se si vuole riempire un numero fissato di caratteri con una variabile, è possibile procedere in questo modo:

Riempimento in testa di 10 caratteri

"Ciao {0: >10}".format("mondo") # Ritorna "Ciao      mondo"

Riempimento in coda di 10 caratteri

"Ciao {0: <10}".format("mondo") # Ritorna "Ciao mondo     "

Riempimento centrale in 10 caratteri

"Ciao {0: ^10}".format("mondo") # Ritorna "Ciao   mondo   "

Settaggio della dimensione secondo variabile passata

"Ciao {0: >{fill}}".format("mondo", fill=10) # Ritorna "Ciao      mondo"

Conversione di formato

Usando dei particolari descrittori è possibile convertire il valore in uno specifico formato.

Binario

"Risultato: {0:b}".format(90) # Ritorna "Risultato: 1011010"

Carattere

"Risultato: {0:c}".format(90) # Ritorna "Risultato: Z"

Intero

Usando 'n' invece di 'd' verranno usate le impostazioni locali

"Risultato: {0:d}".format(0b1011010) # Ritorna "Risultato: 90"

Virgola fissa

Facendo precedere alla 'f' un punto e un numero possiamo definire la precisione. Ad esempio "{0:.2f}" stamperà fino alla seconda cifra dopo la virgola.

"Risultato: {0:f}".format(90) # Ritorna "Risultato: 90.000000"

Ottale

"Risultato: {0:o}".format(90) # Ritorna "Risultato: 132"

Esadecimale

Usando 'X' invece di 'x' il risultato sarà scritto in maiuscolo.

"Risultato: {0:x}".format(90) # Ritorna "Risultato: 5a"

Notazione scientifica

"Risultato: {0:e}".format(90) # Ritorna "Risultato: 9.000000e+01"

Percentuale

Facendo precedere alla '%' un punto e un numero possiamo definire la precisione. Ad esempio "{0:.0%}" non stamperà nulla dopo la virgola.

"Risultato: {0:%}".format(0.9) # Ritorna "Risultato: 90.000000%"