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

Jinku Hu 10 octubre 2023
  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
Cómo comprobar si una cadena contiene un sustrato en Python

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

  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.
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artículo relacionado - Python String