Le stringhe

In questa lezione ci occupiamo di come trattare le stringhe in Python. Abbiamo già visto che per dichiarare una stringa è sufficiente assengare ad una nuova variabile un testo racchiuso tra virgolette: è possibile racchiudere il suo valore indifferentemente tra apici (carattere ') o doppi apici (carattere ").

Questo permette di superare facilmente il problema dell’utilizzo dei suddetti caratteri nel valore stesso della stringa, ad esempio "l'acqua" o 'Egli disse: "Acqua"'. È anche possibile usare il carattere di escape \ prima di ' o "'Egli disse: "L\'acqua"'.

Le stringhe, così come le liste o le tuple, sono un tipo particolare di sequenze e perciò supportano tutte le operazioni comuni alle sequenze. Vediamone alcune.

Indexing e Slicing

In Python, è possibile accedere agli elementi di una sequenza, usando la sintassi sequenza[indice]. Questo restituirà l’elemento in posizione indice (il primo elemento ha sempre indice 0). È inoltre possibile specificare indici negativi che partono dalla fine della sequenza (l’ultimo elemento ha indice -1, il penultimo -2, ecc.). Questa operazione è chiamata indexing.

La sintassi sequenza[inizio:fine] ci permette di ottenere una nuova sequenza dello stesso tipo che include tutti gli elementi partendo dall’indice inizio (incluso) all’indice fine (escluso). Se inizio è omesso, gli elementi verranno presi dall’inizio, se fine è omesso, gli elementi verranno presi fino alla fine. Questa operazione è chiamata slicing (letteralmente “affettare”).

>>> s = 'Python'
>>> s[0:2]  # sottostringa con elementi da 0 (incluso) a 2 (escluso)
'Py'
>>> s[:2]   # dall'inizio all'elemento con indice 2 (escluso)
'Py'
>>> s[3:5]  # dall'elemento con indice 3 (incluso) a 5 (escluso)
'ho'
>>> s[4:]   # dall'elemento con indice 4 (incluso) alla fine
'on'
>>> s[-2:]  # dall'elemento con indice -2 (incluso) alla fine
'on'

Contenimento

Gli operatori in e not in possono essere usati per verificare se un elemento fa parte di una sequenza o no. Nel caso delle stringhe, è anche possibile verificare se una sottostringa è contenuta in una stringa:

>>> s = 'Python'
>>> 'P' in s  # controlla se il carattere 'P' è contenuto nella stringa s
True
>>> 'x' in s  # il carattere 'x' non è in s, quindi ritorna False
False
>>> 'x' not in s  # "not in" esegue l'operazione inversa
True
>>> 'Py' in s  # controlla se la sottostringa 'Py' è contenuto nella stringa s
True
>>> 'py' in s  # il controllo è case-sensitive, quindi ritorna False
False

Concatenamento, ripetizione e lunghezza

È possibile usare l’operatore + per concatenare sequenze, e * per ripetere sequenze:

>>> 'Py' + 'thon'
'Python'
>>> 'Py' * 2
'PyPy'
>>> 'Ba' + 'na' * 2
'Banana'

La funzione built-in len() può essere usata per ottenere il numero di elementi in una sequenza:

>>> len('Python')
6
>>> s = 'Precipitevolissimevolmente'
>>> len(s)
26

Funzioni e Metodi

Prima di procedere, è necessario fare una breve parentesi per spiegare la differenza tra funzioni e metodi.

Abbiamo già visto alcune funzioni come len(). La funzioni accettano 0 o più argomenti e possono essere usate con oggetti di diversi tipi, usando la sintassi funzione(argomenti):

Formattazione delle Stringhe

La maggior parte dei metodi delle stringhe sono semplici da capire. C’è tuttavia un metodo che richiede una spiegazione più dettagliata: str.format(). Questo metodo permette di formattare stringhe, ovvero inserire alcuni valori variabili all’interno di una stringa predefinita:

>>> raggio = 8.4
>>> area = 3.14 * raggio**2
>>> circ = 2 * 3.14 * raggio
>>> s = "L'area è {}, la circonferenza è {}."
>>> s.format(area, circ)
"L'area è 221.5584, la circonferenza è 52.752."

Formattazione “vecchio stile”

Prima dell’implementazione di str.format() veniva usato un altro metodo ispirato alla formattazione eseguita dalla funzione printf di C. Questo metodo usa l’operatore % per separare la stringa di formattazione dagli argomenti, e, anche se il funzionamento è simile a str.format(), questo metodo è meno flessibile.

>>> raggio = 8.4
>>> area = 3.14 * raggio**2
>>> circ = 2 * 3.14 * raggio
>>> s = "L'area è %f, la circonferenza è %f."
>>> s % (area, circ)
"L'area è 221.558400, la circonferenza è 52.752000."

Potete notare che questo metodo usa %f come placeholder invece di {}. Oltre a %f (per i float), esistono anche altri tipi di placeholder, come %d per gli interi o %s per le stringhe.

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

Progetta un sito come questo con WordPress.com
Comincia ora