1.1.3 - Stringhe¶
In Python le stringhe possono indifferentemente essere racchiuse tra virgolette singole e doppie.
Notiamo nella seconda istruzione l'uso del carattere di escape (\
) che precede l'apostrofo; se lo omettessimo, l'interprete ci restituirebbe un errore sintattico (SyntaxError
):
Nota
Tutti i caratteri preceduti dal simbolo \
saranno interpretati come escape character, a meno di aggiungere il simbolo r
prima dell'inizio della stringa:
Stringhe su righe multiple¶
Stringhe e liste
La maggior parte dei concetti che vedremo nel seguito sono applicabili anche alle liste. Anzi, per essere precisi, derivano proprio dalle liste, in quanto Python considera una stringa un particolare tipo di lista.
Le stringhe possono articolarsi su più righe. Per farlo, possiamo usare le triple-quotes, ovvero tre virgolette di seguito, per indicare l'inizio e la fine della stringa:
Nota
Notiamo nel precedente snippet il carattere \
, usato per evitare che venga automaticamente inserito dall'interprete il carattere newline (\n
) al termine di ogni riga. Infatti, si vede come il newline non sia stato aggiunto nelle righe evidenziate, mentre sia presente nella riga 2.
Concatenazione di stringhe¶
Concatenare due stringhe in Python è estremamente semplice, e basta usare l'operatore +
:
Nota
Se usiamo l'operatore *
possiamo concatenare più volte la stessa stringa:
Possiamo anche semplicemente porre le due stringhe l'una di seguito all'altra:
Attenzione
Bisogna fare particolare attenzione a non concatenare un literal (ovvero una stringa racchiusa tra virgolette) ad una variabile di tipo stringa. Se proviamo a farlo, l'interprete ci restituirà questo errore:
Lo stesso errore si presenterebbe se al posto della variabile py
usassimo il risultato di una operazione di concatenazione:
Il consiglio, in questi casi "ibridi", è quello di usare l'operatore standard di concatenazione, ovvero il+
.
Nota
Esistono modi più efficienti di concatenare delle stringhe, specialmente quando si ha a che fare con numerose operazioni di concatenazione in grossi cicli; l'approfondimento di tali metodi è demandato al lettore.
Indicizzazione di stringhe¶
Python definisce le stringhe come degli array di caratteri; è quindi possibile indicizzarli. Ad esempio:
Anche i singoli caratteri sono considerati come delle stringhe, ovviamente di lunghezza unitaria:
Python permette di accedere anche usando degli indici negativi, considerando quindi gli elementi che vanno da destra verso sinistra. In questo caso, l'indice del primo elemento da destra sarà indicato con -1
:
Slicing su stringhe¶
L'operazione di slicing permette di estrarre una certa parte di una stringa. In generale, assume la seguente forma:
dove i
è l'indice iniziale, j
quello finale ed s
lo step utilizzato. E' importante sottolineare come l'elemento all'indice iniziale sarà incluso, mentre quello all'indice finale sarà escluso.
Ad esempio:
Se volessimo considerare tutti i caratteri fino a j
(escluso), dovremmo usare la seguente notazione:
Se invece volessimo considerare tutti i caratteri a partire da i
(incluso), dovremmo usare la seguente notazione:
Ad esempio:
Anche in questo caso, è possibile usare degli indici negativi. Ad esempio, se volessimo prendere tutti i caratteri dalla terzultima lettera fino alla fine, potremmo scrivere:
mentre se volessimo prendere tutti i caratteri fino alla terzultima lettera (esclusa):
Suggerimento
E' possibile ottenere un'intera stringa mediante l'operazione di slicing in questo modo:
Lunghezza di una stringa¶
La funzione len()
ci restituisce la lunghezza di una stringa:
Immutabilità di una stringa¶
Le stringhe in Python sono immutabili. Come indica la parola stessa, questo significa che non possono essere modificate: se, ad esempio, provassimo a ridefinirne uno o più elementi, acceduti magari mediante indexing o slicing, avremmo un errore.
>>> stringa[0] = 'C'# Errore!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Suggerimento
Possiamo comunque assegnare il nome stringa
ad una nuova variabile.