
Il metodo find() delle stringhe in Python
In questa lezione del corso Python ti spiego come si utilizza il metodo find() nelle stringhe.
Cos'è il metodo find? Il metodo find() ti permette di cercare una stringa di testo all'interno di una variabile di tipo string. Ad esempio, se hai una stringa di testo "Hello world", puoi usare il metodo find per verificare se esiste la parola "world" nel testo e in quale posizione del testo si trova.
Il metodo find() è un metodo predefinito degli oggetti di tipo stringa.
stringa.find(sottostringa,from,to)
La sintassi del metodo find si spiega in questo modo
- la stringa è l'oggetto di tipo stringa ossia un testo.
- la sottostringa è una stringa che vuoi cercare nel testo.
- il parametro from indica la posizione da cui vuoi iniziare la ricerca nella stringa.
E' facoltativo. Di default è il primo carattere della stringa.
- Il parametro to indica la posizione in cui vuoi terminare la ricerca. E' facoltativo.
Di default è l'ultimo carattere della stringa.
il metodo find() cerca la stringa all'interno del testo e restituisce la posizione della prima occorrenza di quella stringa.
Se la stringa non viene trovata, il metodo find() restituisce "-1".
Nota. Ricorda che in Python il primo carattere di una stringa occupa la posizione zero, il secondo carattere occupa la posizione uno e via dicendo. In pratica l'indice dei caratteri in una stringa parte sempre da zero.
Ti faccio un esempio pratico
Crea una stringa chiamata "testo"
>>> testo = "Il padre di mio padre"
Ora digita testo.find("padre") per cercare la stringa "padre" nel testo.
>>> testo.find("padre")
La stringa "padre" si trova a partire dal quarto carattere del testo, nella posizione indice 3.
Il metodo find() trova la parola "padre" all'interno della variabile e restituisce la posizione della prima lettera della parola, ovvero 3.
3
Nota. Nel testo ci sono due occorrenze della stringa "padre". La stringa compare due volte. Il metodo find() ti restituisce la posizione solo della prima occorrenza.
Ora digita il comando testo.find("padre", 5) per cercare la stringa "padre" nel testo.
>>> testo.find("padre",5)
Il metodo cerca la parola "padre" a partire dalla posizione indice 5 del testo, ossia dal sesto carattere.
In questo caso la prima occorrenza della stringa "padre" si trova nella posizione 16.
Quindi, il metodo find() restituisce in output il numero 16.
16
Infine, digita il comando testo.find("padre", 5, 15) per cercare la stringa "padre" nel testo.
>>> testo.find("padre",5,15)
Il metodo cerca la parola "padre" dalla posizione 5 alla posizione 15 della stringa.
In questo caso il metodo find() non trova la stringa "padre" nel testo.
Quindi, restituisce in output il numero -1
-1
Nota. Quando il metodo find() ti restituisce il numero zero (0) vuol dire che ha trovato la stringa che stai cercando nella prima posizione del testo. Quindi, non confondere 0 con -1.
Come cercare tutte le occorrenze di una determinata stringa all'interno di una variabile?
Se vuoi trovare tutte le occorrenze di una stringa nel testo tramite il metodo find(), devi usare un ciclo
- testo = "Il padre di mio padre"
- parola_da_cercare = "padre"
- # Trova la posizione della prima occorrenza
- posizione = testo.find(parola_da_cercare)
- # Il loop continua finché ci sono occorrenze
- while posizione != -1:
- print(posizione)
- posizione = testo.find(parola_da_cercare, posizione + 1)
Come funziona? Questo ciclo itera compiendo più ricerche. Ogni ricerca comincia dalla posizione dell'ultima occorrenza trovata. Ogni iterazione compie un'ulteriore ricerca nella parte restante del testo. Il ciclo termina quando il metodo find() restituisce -1 perché non trova la stringa nella testo restante.
In questo caso, il ciclo trova tutte le occorrenze della stringa "padre" all'interno della variabile "testo" e restituisce una lista contenente le posizioni di ogni occorrenza.
Lo script restituisce le posizioni 3 e 16.
3
16
In conclusione, il metodo find() nel linguaggio Python è uno strumento molto utile perché ti permette di cercare delle stringhe all'interno di una variabile di testo.