¡Hola, Keepcoders! En el día de hoy queremos enseñarles acerca de una función muy usada en python. Se trata del str.index(). Veamos en qué consiste, cómo funciona y sus características y diferencias con otros métodos similares.
¿Qué es str.index() en Python?
El método str.index() es una forma de buscar una subcadena dentro de una cadena principal en python. Si encuentra la subcadena, devuelve el índice de la primera aparición de esa subcadena. En caso contrario, lanza una excepción ValueError, a diferencia de otros métodos como find() que simplemente devuelven -1 cuando no encuentran el valor.
La sintaxis básica de str.index() es la siguiente:
string.index(substring, start=0, end=len(string))
- substring: La subcadena que buscas dentro de la cadena principal.
- start: (Opcional) El índice de inicio desde donde comienza la búsqueda. Por defecto es 0, lo que significa que se buscará desde el inicio.
- end: (Opcional) El índice de fin donde se termina la búsqueda. Si no se especifica, se buscará hasta el final de la cadena.
¿Cómo utilizar str.index()?
Para entender mejor cómo funciona str.index(), veamos un ejemplo súper simple: supongamos que tienes la siguiente cadena:
txt = "Hola, bienvenido a Python"
Y quieres encontrar la posición de la palabra “bienvenido”. El código sería:
txt = "Hola, bienvenido a Python"
position = txt.index("bienvenido")
print(position)
Salida:
6
🔴 ¿Quieres Aprender a Programar con Python? 🔴
Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semanaEl método index() devuelve 6 porque la palabra “bienvenido” comienza en el índice 6 de la cadena.
str.index() con los parámetros start y end
También puedes especificar un rango en el que deseas realizar la búsqueda. Esto es útil cuando solo te interesa buscar dentro de una sección específica de la cadena.
Por ejemplo, si solo quieres buscar la palabra “a” entre las posiciones 10 y 20 de la siguiente cadena:
txt = "Hola, bienvenido a Python"
position = txt.index("a", 10, 20)
print(position)
La salida sería algo como:
16
En este caso, la búsqueda se realiza solo entre el índice 10 y el 20, y la primera aparición de “a” se encuentra en el índice 16.
str.index() y otros métodos de búsqueda
Es común confundirse entre los métodos index()
y find()
, ya que ambos sirven para buscar subcadenas dentro de una cadena. Sin embargo, tienen una diferencia y es qué:
- str.index(): Lanza una excepción ValueError si la subcadena no se encuentra.
- str.find(): En lugar de lanzar una excepción, devuelve -1 si la subcadena no se encuentra.
Por ejemplo, si intentamos buscar una subcadena que no existe:
txt = "Hola, bienvenido a Python"
print(txt.index("Java"))
La salida va a ser:
ValueError: substring not found
En cambio, si usamos find():
txt = "Hola, bienvenido a Python"
print(txt.find("Java"))
Salida:
-1
¿Cuándo usar str.index() y cuándo usar str.find()?
- Usa str.index() cuando estés seguro de que la subcadena existe y no te importe que el programa lance una excepción si no la encuentra.
- Usa str.find() si prefieres manejar los casos donde la subcadena no existe de manera más controlada, sin que se interrumpa el flujo del programa.
str.rfind() y str.index()
Si bien str.index() busca la primera aparición de la subcadena desde el principio de la cadena, hay un método similar llamado str.rfind() que busca la última aparición de la subcadena:
txt = "Hola, bienvenido a Python. Bienvenido nuevamente"
position = txt.rfind("Bienvenido")
print(position)
El resultado será:
27
En este caso, rfind() devuelve la última aparición de la palabra “Bienvenido”, que está en el índice 27.
Si quieres seguir aprendiendo sobre programación, no dudes en unirte a nuestro programa bootcamp sobre programación desde cero, en el que podrás acceder a los mejores profesores que te guiarán en tu proceso formativo y te ayudarán a conseguir el éxito profesional en unos cuantos meses. Capacítate para ser programador junior y consigue el trabajo de tus sueños. ¡No dejes pasar la oportunidad de cambiar tu futuro!