Buscar en una cadena en Python

buscar en una cadena en python

Buscar un elemento en una cadena en Python se puede hacer de diversas opciones seg煤n cual 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():

# Buscar con str.find(sub, start=0, end=-1)

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:

  1. Buscar ‘una’ de inicio a fin
  2. Buscar ‘una desde la posici贸n 13 a fin
  3. 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() devolvemos un -1 y en el caso de index() devolvemos una excepci贸n ValueError.

Por ejemplo, si ejecutamos el siguiente c贸digo se producir铆a una excepci贸n por la segunda b煤squeda:

# Buscar con str.index(sub, start=0, end=-1)
str = "Buscando en una cadena con index"
print(str.index("una"))
print(str.index("una", 13))

Salida:

12
Traceback (most recent call last):
  File "/Volumes/vodafoneBA/MaPeCode/Productos/Python/Python Code/Posts/Search_str.py", line 11, in <module>
    print(str.index("una", 13))  # Busca 'una' desde la posicion 13 a fin
ValueError: substring not found

Buscar con index() en Python sin excepciones

Ahora os propongo una funci贸n con la que controlaremos una posible excepci贸n ValueError al buscar con index().

def search_index(string,sub,start=0,end=-1):
    """ Buscara la subcadena sub en la cadena string
    desde start hasta end controlando excepciones """
    try:
        return string.index(sub,start,end)
    except:
        return "'"+sub+"'"+" no se encuentra en " + "'"+string+"'"

 

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.

Una ejecuci贸n de esta funci贸n buscando una subcadena que no esta en el rango de posiciones introducido se puede ver a continuaci贸n:

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

El resultado ser铆a el siguiente:

'una' no se encuentra en 'Buscando en una cadena con index'

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

Deja un comentario