Buscar un elemento en una cadena en Python se puede hacer de diversas opciones según cuál sea nuestro objetivo. En este post vamos a ver las opciones más interesantes o útiles. 😉

Comprobar si un elemento está en una cadena Python

Esta opción puede resultar muy útil si simplemente queremos comprobar con una condición si un elemento está contenido en una cadena.
Bastaría con hacer una condición con el operador in:

if 'ho' in 'hola':
    pass

Esta condición podemos extrapolarla a otras situaciones, por ejemplo si en el intérprete la introducimos nos devolverá un True.

Método find en Python

El método find del tipo de dato cadena es el más utilizado si queremos buscar una subcadena dentro de una cadena.

El siguiente código incluye algunos ejemplos de búsquedas que podemos hacer con find().

str = "Buscando en una cadena con find"
print(str.find("una")) 
print(str.find("una",13))
print(str.find("en",10,-2))

Esta función recibe la subcadena a buscar y opcionalmente las posiciones de inicio o fin y devuelve la posición de inicio de la subcadena si la encuentra. En caso contrario, devuelve un -1.

En el código anterior tenemos varias búsquedas con los siguientes objetivos:

  • Buscar ‘una’ de inicio a fin
  • Buscar ‘una desde la posición 13 a fin
  • Buscar ‘en’ desde la posición 10 hasta la penúltima

Método index en Python

El funcionamiento del método index para buscar una subcadena en una cadena en Python es igual que el método find(), pero existe una diferencia.

Diferencia entre index y find Python

La diferencia entre ambos métodos es que en el caso de find se devuelve un -1 y en el caso de index una excepción ValueError. Por ejemplo, si ejecutamos el siguiente código se produciría una excepción por la segunda búsqueda:

str = "Buscando en una cadena con index"
print(str.index("una"))
print(str.index("una", 13))


Buscar con index en Python sin excepciones

Ahora os propongo una función con la que controlaremos la posible excepción que comentaba.

El funcionamiento de la función es que cuando se produzca una excepción se retornará el mensaje contenido en el bloque except. En caso contrario, se devolverá la posición en la que empieza la subcadena.


Espero que os haya sido de utilidad el post, cualquier duda o sugerencia podéis hacerla en los comentarios 🙃

Etiquetado en: