Usar find e index para buscar posición de carácter en cadena con Python 3

Posición o índice de un carácter o subcadena en cadena de Python

Vamos a ver cómo obtener el índice numérico de un carácter o letra en una cadena de Python 3. No importa si lo que buscamos es un simple carácter o una subcadena, ambas formas serán cubiertas.

Usar find e index para buscar posición de carácter en cadena con Python 3
Usar find e index para buscar posición de carácter en cadena con Python 3

Los métodos de las cadenas que tiene Python para resolver este problema son dos: find e index. Vamos a explicar cómo se usa cada uno de ellos con ejemplos.

Lo que haremos

Obtener un índice numérico (comenzando con cero) que indique, a partir de una cadena, en dónde tiene la primer ocurrencia de una subcadena o carácter.

Usar find para buscar el índice de una subcadena o carácter en una cadena

Para esto, las cadenas tienen el método find. Este método recibe otra cadena, la cual puede ser de cualquier tamaño. Devuelve -1 si no la encuentra, y un número mayor o igual a 0 en caso de que sí la encuentre.

Veamos un ejemplo:

"""
	Posición o índice de subcadena en cadena con Python 3
	usando index y find

	@author parzibyte
"""
cadena = "Hola, mundo. Tengo un poco de texto sin sentido que servirá para explicar cómo buscar cadenas dentro de cadenas"

subcadena = "mundo"
indice = cadena.find(subcadena)
print("La subcadena '{}' está en el índice {}".format(subcadena, indice))
# La subcadena 'mundo' está en el índice 6

subcadena = ","
indice = cadena.find(subcadena)
print("La subcadena '{}' está en el índice {}".format(subcadena, indice))
# La subcadena ',' está en el índice 4

# Ahora buscamos la palabra "cadenas" que aparece dos veces, para ejemplificar el segundo argumento
subcadena = "cadena"
primer_indice = cadena.find(subcadena)
print("La primera ocurrencia está en {}".format(primer_indice))
# La primera ocurrencia está en 86
#Nota: es desde el índice + 1
segundo_indice = cadena.find(subcadena, primer_indice + 1)
print("La segunda, buscando a partir de {} está en {}".format(
    primer_indice + 1, segundo_indice))
# La segunda, buscando a partir de 87 está en 104

# Ahora limitamos la búsqueda, aunque existe una coma, no la encontrará porque estamos limitando
subcadena = ","
indice = cadena.find(subcadena, 0, 1)  # Hasta el primer carácter
if indice is not -1:
	print("La subcadena '{}' está en el índice {}".format(subcadena, indice))
else:
	print("Subcadena no encontrada")
# Subcadena no encontrada

# Finalmente buscamos algo que no existe y devuelve - 1
subcadena = "ASDFG"
indice = cadena.find(subcadena)
print("La subcadena '{}' está en el índice {}".format(subcadena, indice))
# La subcadena 'ASDFG' está en el índice -1

Por cierto, esto devuelve la primer ocurrencia. Si queremos que comience a buscar desde determinado índice, podemos usar el segundo argumento, el cual es un número.

Igualmente, si queremos que busque hasta determinado índice, podemos especificar el segundo argumento para que no busque más allá.

Con index

Las cadenas en Python también tienen el método index, el cual es idéntico a find excepto por una cosa: si no se encuentra una subcadena, se lanza una excepción en lugar de devolver -1. Veamos el ejemplo:

"""
	Posición o índice de subcadena en cadena con Python 3
	usando index y find

	@author parzibyte
"""
cadena = "Hola, mundo. Tengo un poco de texto sin sentido que servirá para explicar cómo buscar cadenas dentro de cadenas"

subcadena = "mundo"
indice = cadena.index(subcadena)
print("La subcadena '{}' está en el índice {}".format(subcadena, indice))
# La subcadena 'mundo' está en el índice 6

subcadena = ","
indice = cadena.index(subcadena)
print("La subcadena '{}' está en el índice {}".format(subcadena, indice))
# La subcadena ',' está en el índice 4

# Ahora buscamos la palabra "cadenas" que aparece dos veces, para ejemplificar el segundo argumento
subcadena = "cadena"
primer_indice = cadena.index(subcadena)
print("La primera ocurrencia está en {}".format(primer_indice))
# La primera ocurrencia está en 86
#Nota: es desde el índice + 1
segundo_indice = cadena.index(subcadena, primer_indice + 1)
print("La segunda, buscando a partir de {} está en {}".format(
    primer_indice + 1, segundo_indice))
# La segunda, buscando a partir de 87 está en 104

# Ahora limitamos la búsqueda, aunque existe una coma, no la encontrará porque estamos limitando
subcadena = ","
try:
    indice = cadena.index(subcadena, 0, 1)  # Hasta el primer carácter
    print("La subcadena '{}' está en el índice {}".format(subcadena, indice))
except:
    print("Subcadena no encontrada")
# Subcadena no encontrada

# Finalmente buscamos algo que no existe y lanza un error
subcadena = "ASDFG"
indice = cadena.index(subcadena)
print("La subcadena '{}' está en el índice {}".format(subcadena, indice))
# ValueError: substring not found

Como se ve, es lo mismo que lo que hicimos con find, pero ahora con la función index en Python. Para cachar la excepción usamos un bloque try except.

Apuntes

Con estos métodos podemos buscar el índice de la primera ocurrencia, luego el de la segunda ocurrencia  (usando el segundo argumento para comenzar a buscar desde determinado lugar) y así sucesivamente. Esto sirve para muchas cosas en la práctica.

Por cierto, aquí puedes ver cómo recorrer cadenas carácter por carácter en Python.

Descargar ejemplos

Eres libre de copiar los ejemplos. Primero cópialos y guárdalos en un archivo con extensión py. Más tarde, con la terminal navega hasta ellos y ejecuta python nombre_de_archivo.py. Para tener a Python en la PATH mira este tutorial.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

1 comentario en “Posición o índice de un carácter o subcadena en cadena de Python”

  1. Pingback: Pangrama en Python - Parzibyte's blog

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *