Le Stringhe in Python

Lezione#06 Benvenuti alla sesta lezione del corso Python in 11 passi: analizziamo più da vicino le Stringhe.
Nelle lezioni precedenti abbiamo già incontrato linee di codice python che avevano a che con le stringhe. In questa lezione andremo più nel dettaglio, espandendo il set di dati che possiamo usare. Ricordiamo che per creare una stringa abbiamo bisogno delle virgolette o degli apici:
# script_601.py str1 = "Guard" str2 = "ians" mood = str1 + str2 print(mood)
Guardians
Ok! E questo già lo sapevamo ma ripeterlo non fa male. La concatenazione di due o più stringhe avviene con l’operatore +. Notiamo che non c’è spazio tra una stringa e l’altra. Inoltre con print() riusciamo a stampare a video il risultato della concatenazione. Ma cosa accade se concateniamo una stringa con un numero? Non possiamo farlo! Tuttavia possiamo fare così:
# script_602.py str1 = "Guardians of the Galaxy " numb = 3 print(str1 + str(numb))
Guardians of the Galaxy 3
Bene! Abbiamo capito che se si converte il numero in stringa allora tutto fila liscio. Tra le due stringhe ora c’è lo spazio in quanto in str1 ho lasciato uno spazio bianco prima di chiudere le virgolette. Ricapitolando: usando str() possiamo convertire un tipo di dato qualsiasi in una stringa.
Un altro esempio di operazioni sulle stringhe:
# script_603.py motto = "I'm Groot " print(motto * 3)
I’m Groot I’m Groot I’m Groot
Wow! Se moltiplichiamo una stringa per un numero intero, questa verrà ripetuta quel dato numero di volte. Proviamo a calcolare la lunghezza di un’intera frase:
# script_604.py title = "Guardians of the Galaxy" print(len(title))
23
Very nice! Applicando len() ad una stringa abbiamo in output il numero totale di simboli che la caratterizzano (in questo caso lettere + spazi bianchi).
Possiamo assegnare ad una variabile una stringa vuota? Certo! Proviamo:
# script_605.py motto = "" print(type(motto))
<class ‘str’>
Anche se la stringa è vuota, motto è comunque di tipo stringa e la sua lunghezza è pari a zero. Ogni carattere presente in una stringa ha una sua posizione, ossia un indice: possiamo accedere al carattere nel seguente modo:
# script_606.py title = "Guardians of the Galaxy" character = title[5] print(character)
i
Il carattere stampato è i, infatti ricordiamoci che si inizia a contare da zero. Inoltre possiamo estrarre una serie continua di caratteri attraverso un’operazione indicata come slicing:
# script_607.py title = "Guardians of the Galaxy" character = title[0:8] print(character)
Guardians
Great! Abbiamo appena estratto un cosiddetta substring, che va dall’indice 0 all’indice 8. Continuiamo con le operazioni sulle stringhe in python: possiamo sostituire parte di una stringa col metodo replace(). Vediamo un esempio:
# script_608.py troop = "Guardians of the Galaxy" troop = troop.replace("Galaxy", "Night") print(troop)
Guardians of the Night
I Guardiani della Notte, intendo quelli del Trono di Spade (nome originale in inglese Night’s Watch). Quindi, abbiamo sostituito Galaxy con Night, passando dal bellissimo film della Marvel alla epica serie tv che ha come protagonista John Snow.
Consideriamo ora la possibilità di incorrere in errori di scrittura del codice, qualora ci fossero gli apostrofi in gioco:
# script_609.py capital = "King's Landing" #usiamo le virgolette side = 'Night\'s Watch' #usiamo gli apici print(capital) print(side)
King’s Landing
Night’s Watch
Si noti come nel caso di Night’s Watch, utilizzando gli apici dobbiamo ricorrere al backslash (\)per inserire l’apostrofo! Possiamo anche usare un altro escape character per inserire una line break (per separare due o più righe):
# script_610.py troop = "Guardians of the Galaxy " troop += "VS\n" troop = "Night's Watch" print(troop)
Guardians of the Galaxy VS
Night’s Watch
Abbiamo appena usato \n per stampare a video le due frasi su righe separate. Esiste anche un modo alternativo per stampare su più linee:
# script_611.py rumb = """Guardians of the \ Galaxy VS Night's Watch""" print(rumb)
Guardians of the Galaxy
VS
Night’s Watch
Ben fatto! Possiamo usare il triple quote (tre virgolette) per inserire quante linee vogliamo, inoltre col backslash è possibile unire due righe consecutive! Altra cosa da puntualizzare nell’utilizzo di alcuni escape characters, è evidenziata nell’esempio che segue:
# script_612.py path = r"F:\names" #un percorso in un filesystem print(path)
F:\names
In questo modo abbiamo eluso il carattere di escape \n, usando prima delle virgolette la lettera r (che sta per raw-string). Vediamo ora un ultimo esempio riepilogativo:
# script_613.py mood = 'The Night\'s Watch \ holds and guards the Wall' print(mood) part = mood[-8:-1] mood = mood.replace(part, "Winterfell") print(mood)
The Night’s Watch holds and guards the Wall
The Night’s Watch holds and guards Winterfelll
Lezione precedente <– []–> Lezione successiva