Le stringhe in Python
Come usare le stringhe nel linguaggio python
Per assegnare una stringa a una variabile nel linguaggio python posso usare sia una coppia di virgolette che di apici.
nome="Andrea"
cognome='Minini'
Questa doppia possibilità di assegnazione è molto utile, perché mi permette di gestire gli apici (') e le virgolette (") come caratteri normali anche senza usare lo slash (\).
Cos'è una stringa? E' un oggetto composto da caratteri alfanumerici ( lettere, numeri, spazi, caratteri speciali, ecc. ).
Come inserire i caratteri speciali nelle stringhe
Alcuni caratteri e simboli sono detti "speciali" perché hanno anche delle funzionalità, oltre a essere un carattere.
Un esempio di carattere speciale. Le virgolette " sono un carattere ma hanno anche la funzione di delimitare le stringhe. Quindi sono un carattere speciale.
Per inserire un carattere speciale dentro una stringa, aggiungo uno backslash \ prima del carattere.
Un esempio pratico
Voglio assegnare una stringa con le doppie virgolette, inserendo al suo interno delle virgolette come caratteri.
frase="il \"backslash\" è la barra dall'alto verso il basso"
print(frase)
L'output del programma è
il \"backslash\" è la barra dall'alto verso il basso
Se non usassi gli backslash, l'interprete python considererebbe le virgolette interne come chiusura e apertura della stringa, mandando in errore il programma.
Allo stesso modo posso trattare gli altri caratteri speciali come caratteri normali. Ad esempio l'apice (\').
cognome='Dell\'anno'
print(cognome)
Posso anche usare alcune lettere come caratteri speciali per introdurre delle funzionalità nella stringa.
\n Line Feed (ritorno a capo)
\r Carriage Return (ritorno del carrello a sinistra)
\b Backspace (indietro di un carattere)
\t Tab (carattere di tabulazione)
\x inserimento di un carattere tramite il valore esadecimale del codice Ascii ( es. \x21 stampa il punto interrogativo ! )
Esempio
Questa stringa va a capo a metà testo.
stringa='questa stringa va a capo \n a metà testo'
print(stringa)
L'output del programma è il seguente:
questa stringa va a capo
a metà testo.
Come gestire apici e virgolette nelle stringhe
Il linguaggio python mi consente di gestire gli apici (') e le virgolette (") anche senza usare il backslash.
Posso assegnare una stringa con le doppie virgolette usando gli apici come caratteri normali, e viceversa.
Un esempio pratico
Quando utilizzo le doppie virgolette per assegnare una stringa, all'interno della stringa l'apice è considerato automaticamente come un carattere normale.
cognome="Dell'anno"
print(cognome)
Le doppie virgolette (") che racchiudono la stringa non sono stampate mentre l'apice (') viene visualizzato.
L'output del programma è il seguente:
Dell'anno
Viceversa, quando utilizzo gli apici per assegnare la stringa a una variabile, le virgolette all'interno sono considerate come carattere speciale.
frase='il linguaggio si chiama "Python" ed è molto facile'
print(frase)
L'output dello script è il seguente:
il linguaggio si chiama "Python" ed è molto facile
In questo caso, i doppi apici (') che racchiudono la stringa non sono stampati, mentre le virgolette (") sono visualizzate sullo schermo come un carattere qualsiasi.
L'assegnazione tramite tre apici
Per assegnare un valore alfanumerico senza preoccuparmi troppo degli apici o delle virgolette nel testo, posso anche usare la tecnica dei tre apici.
In questo caso i demarcatori sono tre apici all'inizio e alla fine della stringa.
stringa='''informazione alfanumerica'''
Nel testo posso esserci apici, doppi apici, virgolette, doppi virgolette. Sono automaticamente gestite come caratteri semplici.
Inoltre, un testo scritto con il triplo apici trasforma automaticamente il ritorno a capo del testo in \n.
Esempio
In questa stringa ho inserito un po' di tutto.
testo='''questo è un esempio con ' e " all'interno
senza che python vada in errore'''
print(testo)
L'output del programma è il seguente:
questo è un esempio con ' e " all'interno
senza che python vada in errore
Differenza tra stringhe e liste
Le stringhe non vanno gestite come liste nel linguaggio Python, perché ci sono alcune somiglianze ma anche molte differenze.
Come una lista anche una stringa è un insieme ordinato di elementi.
Un esempio pratico
In questo esempio, nella prima assegno una stringa alla variabile nome.
Nella seconda riga suo le parentesi quadre per visualizzare il quarto carattere della stringa.
nome="Andrea"
print(nome[3])
L'output del programma è il seguente:
r
In questo esempio ho trattato la stringa come una lista.
Tuttavia non è sempre così.
Cosa distingue una stringa da una lista?
Mentre una lista mi permette di modificare ogni singolo elemento [n], con la stringa non posso farlo.
Ad esempio, non potrei modificare soltanto la quarta posizione della stringa.
nome[3]="t"
Questa operazione va in errore. Non si può fare.
Per modificare una posizione interna della stringa, devo necessariamente riassegnare un valore a tutta la variabile.
nome="qualsiasi altro valore"
Per inserire un carattere all'interno di una stringa, devo concatenare le due parti iniziali con la stringa da inserire.
Esempio
nome='an-rea'
s = nome[:2] + 'd' + nome[3:]
print(s)
L'output dello script è il seguente
Andrea
E così via.