HOWTO · Python

Come verificare se una stringa contiene una stringa in Python

Questo tutorial introduce diversi modi per verificare se una stringa contiene una specifica sottostringa

Molto spesso è necessario verificare se la stringa data contiene un substrato specifico. Elencheremo qui alcuni metodi, e poi confronteremo le prestazioni del tempo di esecuzione per selezionare il metodo più efficiente.

Prenderemo la stringa - It is a given string come la stringa data e given è la sottostringa da controllare.

in Operatore per controllare se una stringa contiene una sottostringa

in operator è l’operatore di controllo dei soci. x in y è valutato come True se x è un membro di y, o in altre parole, y contiene x.

Restituisce True se la stringa y contiene la sottostringa x.

>>> "given" in "It is a given string"
True
>>> "gaven" in "It is a given string"
False

in Prestazioni dell’operatore

import timeit


def in_method(given, sub):
    return sub in given


print(min(timeit.repeat(lambda: in_method("It is a given string", "given"))))
0.2888628

Metodo str.find() per verificare se una stringa contiene una sottostringa

find è un metodo integrato di string - str.find(sub).

Restituisce l’indice più basso in str dove si trova la sottostringa sub, altrimenti restituisce -1 se sub non viene trovato.

>>> givenStr = 'It is a given string'
>>> givenStr.find('given')
8
>>> givenStr.find('gaven')
-1

Prestazioni del metodo str.find()Metodo

import timeit


def find_method(given, sub):
    return given.find(sub)


print(min(timeit.repeat(lambda: find_method("It is a given string", "given"))))
0.42845349999999993

str.index()Metodo

str.index(sub) is a string built-in method that returns the lowest index in str where sub is found. It will raise ValueError when the substring sub is not found.

>>> givenStr = 'It is a given string'
>>> givenStr.index('given')
8
>>> givenStr.index('gaven')
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    givenStr.index('gaven')
ValueError: substring not found

str.index()Prestazioni del metodo

import timeit


def find_method(given, sub):
    return given.find(sub)


print(min(timeit.repeat(lambda: find_method("It is a given string", "given"))))
0.457951

Soluzione per il controllo delle stringhe Conclusione

  1. in operatore in è quello che si dovrebbe usare per controllare se una sottostringa esiste nella stringa data perché è il più veloce
  2. str.find() e str.index() potrebbero anche essere usati, ma non in modo ottimale a causa delle scarse prestazioni