Corso
Il formatting delle stringhe, noto anche come interpolazione di stringhe, è il processo di inserire una stringa personalizzata o una variabile in un testo predefinito.
custom_string = "String formatting"
print(f"{custom_string} is a powerful technique")
String formatting is a powerful technique
Come data scientist, lo userai per inserire un titolo in un grafico, mostrare un messaggio o un errore, o passare un testo a una funzione.
Metodi per il formatting
- Formatting posizionale
- Stringhe letterali formattate
- Metodo Template
Metodo String.Format
Inseriamo dei segnaposto definiti da una coppia di parentesi graffe in un testo. Chiamiamo il metodo dot format della stringa. Poi passiamo al metodo il valore desiderato. Il metodo sostituisce i segnaposto usando i valori nell’ordine di comparsa, sostituendo con il valore:
'text{}'.format(value)
Formatting posizionale
Dobbiamo definire una stringa e inserire due segnaposto. Passiamo due stringhe al metodo, che verranno usate per ottenere il seguente output:
print("Machine learning provides {} the ability to learn {}".format("systems", "automatically"))
Machine learning provides systems the ability to learn automatically
Possiamo usare variabili sia per la stringa sia per i valori passati al metodo. Nell’esempio qui sotto, definiamo una stringa con segnaposto e altre due variabili. Applichiamo il metodo format alla stringa usando le due variabili definite. Il metodo legge la stringa e sostituisce i segnaposto con i valori forniti.
my_string = "{} rely on {} datasets"
method = "Supervised algorithms"
condition = "labeled"
print(my_string.format(method, condition))
Supervised algorithms rely on labeled datasets
Riordinare i valori
Nell’esempio seguente, aggiungi numeri di indice nei segnaposto per riordinare i valori. Questo influisce sull’ordine con cui il metodo sostituisce i segnaposto.
Il metodo li sostituisce con i valori nell’ordine indicato.
print("{} has a friend called {} and a sister called {}". format("Betty", "Linda", "Daisy"))
Betty has a friend called Linda and a sister called Daisy
Se aggiungiamo i numeri di indice, l’ordine di sostituzione cambia di conseguenza.
print("{2} has a friend called {0} and a sister called {1}". format("Betty", "Linda", "Daisy"))
Daisy has a friend called Betty and a sister called Linda
Segnaposto nominali
Possiamo anche introdurre argomenti keyword che vengono richiamati per nome.
Nell’esempio qui sotto, abbiamo inserito delle keyword nei segnaposto. Poi richiamiamo queste keyword nel metodo format. Infine, assegniamo quale variabile verrà passata per ciascuna di esse, ottenendo il seguente output.
tool="Unsupervised algorithms"
goal="patterns"
print("{title} try to find {aim} in the dataset".format(title=tool, aim=goal))
Unsupervised algorithms try to find patterns in the dataset
Esaminiamo il codice qui sotto. Abbiamo definito un dizionario con le chiavi: tool e goal.
my_methods = {"tool": "Unsupervised algorithms", "goal": "patterns"}
Vogliamo inserire i loro valori in una stringa. All’interno dei segnaposto, possiamo specificare il valore associato alla chiave tool della variabile data usando la notazione tra parentesi. Data è il dizionario specificato nel metodo e tool è la chiave presente in quel dizionario.
print('{data[tool]} try to find {data[goal]} in the dataset'.format(data=my_methods))
Otteniamo così il risultato desiderato mostrato sotto. Attenzione! Devi specificare l’indice senza usare virgolette.
Unsupervised algorithms try to find patterns in the dataset
Specificatore di formato
Possiamo anche specificare lo specifier del formato all’interno delle parentesi graffe. Questo definisce come vengono presentati i singoli valori. Qui useremo la sintassi indice due punti specifier. Uno degli specificatori di formato più comuni è il float rappresentato da f. Nel codice, specifichiamo che il valore passato con l’indice 0 sarà un float.
print("Only {0:f}% of the {1} produced worldwide is {2}!". format(0.5155675, "data", "analyzed"))
Only 0.515567% of the data produced worldwide is analyzed!
Possiamo anche aggiungere .2f per indicare che vogliamo il float con due decimali, come si vede nell’output risultante.
print("Only {0:.2f}% of the {1} produced worldwide is {2}!".format(0.5155675, "data", "analyzed"))
Only 0.52% of the data produced worldwide is analyzed!
Formattare datetime
Python ha un modulo chiamato datetime che ci consente, per esempio, di ottenere la data e l’ora di oggi.
from datetime import datetime
print(datetime.now())
2020-08-08 06:28:42.715243
Ma dato che il formato restituito è molto particolare, puoi usare uno specificatore di formato come %y-%m-%d-%h-%m per adattarlo a qualcosa di più familiare!
print("Today's date is {:%Y-%m-%d %H:%M}".format(datetime.now()))
Today's date is 2020-08-08 06:29
Esempio interattivo
Nel seguente esempio, assegnerai alle variabili first_pos e second_pos rispettivamente le sottostringhe che vanno dal 4° al 19° carattere e dal 22° al 44° carattere di wikipedia_article. Trasforma le stringhe in minuscolo. Infine, stampa le variabili first_pos e second_pos.
# Assign the substrings to the variables
first_pos = wikipedia_article[3:19].lower()
second_pos = wikipedia_article[21:44].lower()
Eseguendo il codice sopra, si ottiene il seguente risultato:
computer science
artificial intelligence
Per saperne di più sul formatting posizionale, guarda questo video dal nostro corso Regular Expressions in Python.
Questo contenuto è tratto dal corso Regular Expressions in Python di DataCamp, a cura di Maria Eugenia Inzaugarat.
Dai un’occhiata al nostro Tutorial sulle stringhe in Python.

