Cómo comprobar si una cadena contiene un sustrato en Python

  1. El operador in comprueba si una cadena contiene una subcadena
  2. str.find() método para comprobar si una cadena contiene una subcadena
  3. str.index() Método
  4. 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. La x en y es evaluada como verdadera 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

  1. 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.
  2. str.find() y str.index() también podrían ser utilizados pero no el óptimo debido al pobre rendimiento.

Artículo relacionado - Python String

  • Cómo comprobar si una cuerda está vacía de forma ptónica
  • Cómo eliminar los espacios en blanco de una cadena en Python
  • Cómo convertir una cadena a datetime en Python
  • Cómo convertir una cadena en minúsculas en Python 2 y 3
  • Cómo convertir una lista en cadena en Python
  • Cómo convertir una cadena en Float o Int en Python
  • Cómo leer un archivo línea por línea a una lista en Python
  • Cómo convertir una cadena en bytes en Python
  • comments powered by Disqus