HOWTO · Python
Cómo comprobar si una cadena contiene un sustrato en Python
Este tutorial presenta múltiples formas de comprobar si una cadena contiene una subcadena específica
En esta página
Es bastante frecuente que tengamos que comprobar si la cadena dada contiene una subcadena específica. A continuación se enumeran algunos métodos y se compara el rendimiento en tiempo de ejecución para seleccionar el método más eficiente.
Tomaremos la cadena - It is a given string (es una cadena dada) como la cadena dada y given es la subcadena a comprobar.
El operador in comprueba si una cadena contiene una subcadena
in operator es el operador de comprobación de membresía. x en y se evalúa como True si x es un miembro de y, o en otras palabras, y contiene x.
Devuelve True si la cadena y contiene la subcadena x.
>>> "given" in "It is a given string"
True
>>> "gaven" in "It is a given string"
False
Rendimiento del operador in
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
str.find() método para comprobar si una cadena contiene una subcadena
find es un método incorporado de string - str.find(sub).
Devuelve el índice más bajo en str donde se encuentra la subcadena sub, de lo contrario devuelve -1 si no se encuentra sub.
>>> givenStr = 'It is a given string'
>>> givenStr.find('given')
8
>>> givenStr.find('gaven')
-1
str.find() Rendimiento del método
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() Método
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() Rendimiento del método
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
Solución de comprobación de subcadenas Conclusión
- El operador
ines el que debería utilizar para comprobar si existe una subcadena en la cadena dada porque es la más rápida. str.find()ystr.index()también podrían ser utilizados pero no el óptimo debido al pobre rendimiento.