Il metodo index() di Python può essere uti­liz­za­to per cercare in una stringa e re­cu­pe­ra­re l’indice di una sot­to­strin­ga Python. Puoi ef­fet­tua­re la ricerca sull’intera stringa Python oppure solo su una parte di essa.

Python string index: sintassi e fun­zio­na­men­to

La sintassi del metodo index è molto semplice da spiegare. Il metodo può essere ri­chia­ma­to con uno, due o tre parametri, dove gli ultimi due sono fa­col­ta­ti­vi. Il primo parametro è sempre la sot­to­strin­ga in base alla quale si vuole ana­liz­za­re la stringa. I due parametri fa­col­ta­ti­vi sono gli indici in cui la ricerca deve iniziare o fermarsi. Puoi uti­liz­zar­li se vuoi cercare la sot­to­strin­ga solo in una de­ter­mi­na­ta area della stringa. Il seguente frammento di codice mostra la sintassi di questo metodo:

string.index(substring)
string.index(substring, start, end)
Python

In questo esempio, “string” è una stringa qualsiasi e “substring” è la sot­to­strin­ga da cercare. “start” e “end” indicano ri­spet­ti­va­men­te gli indici di inizio e fine della ricerca. Se non viene spe­ci­fi­ca­to alcun indice finale (se hai solo due parametri in totale), la ricerca termina alla fine della stringa. Il metodo re­sti­tui­sce l’indice della prima oc­cor­ren­za della sot­to­strin­ga come valore di ritorno. Pertanto, se una sot­to­strin­ga appare più di una volta, tutte le oc­cor­ren­ze suc­ces­si­ve alla prima vengono ignorate da index(). Ecco un esempio di come funziona il metodo:

string = "I am in a string"

print(string.index("string"))
# output: 10

print(string.index("in"))
# output: 5 (the "in" in "I am in...")

print(string.index("in", 7, len(string) - 1))
# output: 13 (the "in" in "string")

print(string.index("in", 7))
# output: 13 (the "in" in "string")

print(string.index("Python"))
# Exception-error message: ValueError
Python

Come puoi vedere nell’esempio pre­ce­den­te, la seconda chiamata a index() re­sti­tui­sce l’indice 5, la prima oc­cor­ren­za di “in” nella stringa. Le chiamate suc­ces­si­ve con i parametri start e end re­sti­tui­sco­no la seconda oc­cor­ren­za di “in” in “string”, all’indice 13. Nell’ultima chiamata a index(), puoi vedere che il metodo re­sti­tui­sce un’eccezione ValueError se la sot­to­strin­ga non è presente. Questa eccezione viene generata anche se l’indice iniziale è maggiore dell’indice finale.

Consiglio

La gestione delle stringhe è un’ope­ra­zio­ne molto comune nella pro­gram­ma­zio­ne Python. Per questo motivo è im­por­tan­te che le stringhe vengano salvate e vi­sua­liz­za­te in un formato ap­pro­pria­to. Nel nostro articolo sul formato delle stringhe in Python ap­pro­fon­dia­mo come puoi adattare il formato delle stringhe alle tue esigenze.

Al­ter­na­ti­va: il metodo find

A seconda dell’uso che fai del metodo index, il metodo find potrebbe essere un’al­ter­na­ti­va migliore. È quasi identico al metodo index, con una dif­fe­ren­za im­por­tan­te: se la sot­to­strin­ga non viene trovata, non viene generata alcuna eccezione. Al suo posto, il metodo re­sti­tui­sce sem­pli­ce­men­te il valore “-1”. Poiché un’eccezione non gestita potrebbe causare il blocco del programma, questo può essere molto utile se non puoi o non vuoi gestire una possibile eccezione. L’ela­bo­ra­zio­ne dell’eccezione può essere simulata anche con una con­di­zio­ne if, come mostrato qui:

string = "Python"

if(string.find("Py") != -1):
    print("Substring included! Index: ", string.find("Py"))
else:
    print("Substring not included!")
Python

In questo esempio, se la sot­to­strin­ga non viene trovata si verifica una bi­for­ca­zio­ne, esat­ta­men­te come nella gestione di un’eccezione. La dif­fe­ren­za prin­ci­pa­le è che in questo esempio find() deve essere eseguito più volte quando la sot­to­strin­ga viene trovata.

Consiglio

Python è uno dei linguaggi di pro­gram­ma­zio­ne più fles­si­bi­li che esistano. Questo ti offre molte pos­si­bi­li­tà su ciò che puoi fare con le stringhe. Scopri di più nel nostro articolo sui diversi modi di con­fron­ta­re le stringhe in Python.

Esempi di Python string index

Vediamo ora due esempi di come index() può essere uti­liz­za­to in un programma. Prima di tutto vedremo un esempio semplice e poi uno un po’ più complesso.

string = "Peter Piper picked a peck of pickled peppers."
print("The string to check is ", string)

while(True):
    sub = input("substring input: ")
    try:
        print("the index is: ", string.index(sub))
    except ValueError:
        print("The substring is not included :/")
Python

Questo esempio cerca una sot­to­strin­ga all’interno di una stringa. Suc­ces­si­va­men­te mostra se la sot­to­strin­ga è contenuta nella stringa e, in caso af­fer­ma­ti­vo, a quale indice si trova. In questo caso, la stringa da ana­liz­za­re è pre­de­fi­ni­ta, mentre la sot­to­strin­ga viene inserita dall’utente ogni volta.

def try_except(start):
    try:
        return string.index(sub, start)
    except ValueError:
        return -1

string = input("string input: ")
sub = input("substring input: ")

occur = 0
start = 0

while(try_except(start) != -1):
    start = try_except(start) + len(sub)
    occur = occur + 1

print("Occur: ", occur)
Python

In questo esempio si verifica se una stringa inserita dall’utente contiene una sot­to­strin­ga. Se viene trovata un’oc­cor­ren­za della sot­to­strin­ga nella stringa, il numero di oc­cor­ren­ze viene in­cre­men­ta­to e la ricerca ri­co­min­cia da quel punto. Quando si raggiunge la fine della stringa, viene vi­sua­liz­za­to il numero totale di ri­pe­ti­zio­ni e il programma termina.

Consiglio

Stai cercando un modo per pub­bli­ca­re la tua ap­pli­ca­zio­ne web in modo rapido e semplice? Deploy Now di IONOS è la piat­ta­for­ma perfetta per te.

Vai al menu prin­ci­pa­le