python

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

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

5 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.