A veces, cuando estamos programando en Python, necesitamos encontrar una cadena o sub cadena dentro de un texto. Si te has pregutnado cómo es posible hacer esto y localizar una palabra o letra específica en un texto, debes aprender a usar str.find(). El día de hoy en este artículo te vamos a mostrar qué es, cómo funciona y por qué deberías hacer uso de esta función.
¿Qué es str.find()?
La función str.find() en Python busca la primera aparición de una subcadena dentro de una cadena de texto. Si encuentra la subcadena, devuelve la posición donde empieza. Si no la encuentra, devuelve -1, lo que la convierte en una opción segura para evitar errores al buscar texto.
A diferencia de otros métodos como index(), str.find() no genera excepciones si no encuentra la subcadena, lo que lo hace ideal para manejar casos donde no estás seguro de si el texto que buscas está presente.
La sintaxis de str.find() es clara, solo tienes que escribir lo siguiente:
string.find(substring, start, end)
- substring: La subcadena que quieres buscar.
- start (opcional): Índice donde deseas que inicie la búsqueda.
- end (opcional): Índice donde deseas que termine la búsqueda.
Si no especificas start y end, la búsqueda se realizará en toda la cadena.
Veamos un ejemplo en el que tienes un texto y quieres encontrar la palabra “bienvenido”:
txt = "Hola, bienvenido a Python"
posicion = txt.find("bienvenido")
print(posicion)
🔴 ¿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 semanaLa salida sería:
6
En este caso, str.find() devuelve 6 porque la palabra “bienvenido” comienza en esa posición (recuerda que los índices empiezan en 0 en Python).
H | o | l | a | , | b | i | e | n | v | e | n | i | d | o | |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 11 | 13 | 14 | 15 |
Usar str.find() con parámetros start y end
A veces no necesitas buscar en toda la cadena, sino en una parte específica. Para eso están los parámetros start y end:
txt = "Hola, bienvenido a Python. Python es genial."
posicion = txt.find("Python", 10, 30)
print(posicion)
Salida:
20
Aquí la búsqueda comienza desde el índice 10 y termina en el índice 30. El método encuentra la primera aparición de “Python” dentro de ese rango.
Diferencias entre find() e index()
Aunque str.find() y str.index() parecen similares, tienen una diferencia importante: str.find() devuelve -1 si no encuentra la subcadena, mientras que str.index() genera un error. Veamos un ejemplo:
txt = "Hola, bienvenido a Python"
# Usando find()
print(txt.find("Java"))
# Usando index()
print(txt.index("Java"))
La salida sería algo así:
-1
Traceback (most recent call last):
...
ValueError: substring not found
Esto demuestra que str.find() es más seguro si no estás seguro de que la subcadena exista en el texto:
Comportamiento sensible a mayúsculas
El método str.find() distingue entre mayúsculas y minúsculas, lo que significa que buscar “python” no es lo mismo que buscar “Python”.
txt = "Python es divertido"
posicion = txt.find("python")
print(posicion)
La salida quedaría como:
-1
Como puedes ver, no se encontró la subcadena porque “python” en minúsculas no coincide con “Python” en mayúsculas.
Casos de uso de str.find()
Estas son algunas aplicaciones de str.find()
que puedes poner en práctica en tus proyectos:
- Validar contenido en un texto: Si necesitas saber si un texto contiene una palabra clave, str.find() es perfecto:
txt = "Aprender Python es divertido"
if txt.find("Python") != -1:
print("La palabra 'Python' está presente")
- Buscar la posición de un carácter específico: Si quieres encontrar la posición de una letra en un texto, puedes usarlo directamente:
txt = "Python es genial"
posicion = txt.find("e")
print(posicion)
- Extraer información basada en la posición: Una vez que localizas una subcadena, puedes usar su posición para extraer texto relacionado:
txt = "Bienvenido a Python. Aprende Python con nosotros."
inicio = txt.find("Aprende")
frase = txt[inicio:]
print(frase)
Salida esperada:
Aprende Python con nosotros.
Si este artículo despertó tu curiosidad por aprender más sobre Python, imagina lo que podrías lograr con un conocimiento completo del lenguaje. En el Bootcamp de programación inicial de KeepCoding te enseñamos todo lo que necesitas para convertirte en un profesional del sector de la tecnología en tiempo récord. Deja de soñar con un cambio y empieza a construirlo hoy mismo . ¿Qué estás esperando para dar el salto?