Cómo comprobar si una cadena contiene un sustrato en Python
-
El operador
in
comprueba si una cadena contiene una subcadena -
str.find()
método para comprobar si una cadena contiene una subcadena -
str.index()
Método - Solución de comprobación de subcadenas Conclusión
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
in
es 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.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook