Cómo encontrar la posición de una subcadena con el Python string index

El método “index()” de Python puede utilizarse para buscar en una cadena y recuperar el índice de una subcadena Python. Puedes buscar en toda la cadena Python o solo en una parte de ella.

Python string index: sintaxis y funcionalidad

La sintaxis del método “index” es muy fácil de explicar. El método puede invocarse con uno, dos o tres parámetros, siendo los dos últimos opcionales. El primer parámetro es siempre la subcadena, tras la cual puedes revisar la cadena. Los dos parámetros opcionales son los índices en los que debe iniciarse o detenerse la búsqueda. Puedes utilizarlos si solo buscas la subcadena en una zona determinada de la cadena. El siguiente fragmento de código muestra la sintaxis de este método:

string.index(substring)
string.index(substring, start, end)
Python

En este ejemplo, “string” es una cadena arbitraria y “substring” es la subcadena a buscar. “start” y “end” indican los índices inicial y final de la búsqueda. Si no se especifica ningún índice final (si solo tienes dos parámetros en total), la búsqueda termina al final de la cadena. El método devuelve el índice de la primera aparición de la subcadena como valor de retorno. Por tanto, si una subcadena aparece más de una vez, todas las apariciones posteriores a la primera son ignoradas por “index()”. Aquí tienes un ejemplo de cómo funciona el método.

string = "I am a string"
print(string.index("String"))
print(string.index("in"))
# output: 5 (the "a" in "am")
print(string.index("in", 7, len(string) - 1))
# output: 9 (the "ing" in "string")
print(string.index("in", 7))
# output: 9 (the "ing" in "string")
print(string.index("Python"))
# Exception-error message: ValueError
Python

Como puedes ver en el ejemplo anterior, la segunda llamada a “index()” solo devuelve el índice de la “a” en “am”. Las demás apariciones de “am” se ignoran. En la última llamada a “index()”, puedes ver que el método devuelve una excepción “ValueError” si no se incluye la subcadena. Esta excepción también aparece si se introducen índices negativos o si el índice inicial es mayor que el índice final. Si se produce alguno de estos casos en tu programa, puedes manipular la excepción en consecuencia.

Consejo

El tratamiento de cadenas es una tarea muy común en la programación en Python. Por eso es importante que las cadenas se guarden y muestren en un formato adecuado. En nuestro artículo sobre el formato de las cadenas en Python examinamos más detenidamente cómo puedes adaptar el formato de las cadenas a tus necesidades.

Alternativa: el método find

Dependiendo de para qué necesites el método índice, el método find puede ser una alternativa mejor. Es casi idéntico al método índice, con una diferencia importante: si no se encuentra la subcadena, no se crea ninguna excepción. En su lugar, simplemente devuelve “-1”. Dado que una excepción no controlada haría que tu programa se bloqueara, esto puede ser muy interesante si no puedes o no quieres controlar una posible excepción. El procesamiento de la excepción puede simularse incluso con una condición if, como se muestra aquí:

string = "Python"
if(string.find("Py") != -1):
    print("Substring included! Index: ", string.find("Py"))
else:
    print("Substring not included!")
Python

En este ejemplo, si no se encuentra la subcadena, se produce una bifurcación, igual que cuando se gestiona una excepción. La mayor diferencia es que en este ejemplo “find()” tiene que ejecutarse varias veces cuando se encuentra la subcadena.

Consejo

Python es uno de los lenguajes de programación más flexibles que existen. Esto te da muchas opciones respecto a lo que puedes hacer con las cadenas. Descubre más en nuestro artículo sobre diferentes formas de comparar cadenas en Python.

Ejemplos de Python string index

Ahora veremos dos ejemplos de cómo puede utilizarse “index()” en un programa. En primer lugar, veremos un ejemplo sencillo y, a continuación, uno un poco más complejo.

string = "Peter Piper picked a peck of pickled peppers."
print("The string to check is ", string)
while(True):
    sub = input("substring input: ")
    try:
        print("the index is: ", string.index(sub))
    except:
        print("The substring is not included :/")
Python

Este ejemplo busca una subcadena en una cadena. A continuación, muestra si la subcadena está contenida en la cadena y, en caso afirmativo, en qué índice. En este caso, la cadena que buscamos está predeterminada, pero la subcadena la vuelve a introducir el usuario en cada ocasión.

def try_except(start):
    try:
        return string.index(sub, start)
    except:
        return -1
string = input("string input: ")
sub = input("substring input: ")
occur = 0
start = 0
while(try_except(start) != -1):
    start = try_except(start) + len(sub)
    occur = occur + 1
print("Occur: ", occur)
Python

En este ejemplo, se comprueba si una cadena introducida por el usuario contiene una subcadena. Si se encuentra una entrada de la subcadena en la cadena, se incrementa el número de entradas y se reinicia la búsqueda. Cuando se alcanza el final de la cadena, se obtiene el número total de repeticiones y el programa termina.

Consejo

¿Buscas una forma de publicar tu aplicación web rápida y fácilmente? Deploy Now de IONOS es la plataforma perfecta para ti.

Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede obtener más información, o bien conocer cómo cambiar la configuración de su navegador en nuestra. Política de Cookies.