Búsqueda de sitios web

Error de tipo: los índices de cadenas deben ser números enteros: cómo solucionarlo en Python


En Python, hay ciertos objetos iterables (listas, tuplas y cadenas) a cuyos elementos o caracteres se puede acceder utilizando sus números de índice.

Por ejemplo, para acceder al primer carácter de una cadena, haría algo como esto:

greet = "Hello World!"

print(greet[0])
# H

Para acceder al valor del primer carácter en la cadena greet anterior, utilizamos su número de índice: greet[0].

Pero hay casos en los que obtendrá un error que dice "TypeError: los índices de cadena deben ser números enteros" al intentar acceder a un carácter en una cadena.

En este artículo, verá por qué ocurre este error y cómo solucionarlo.

¿Qué causa el "TypeError: los índices de cadenas deben ser números enteros" en Python?

Hay dos razones comunes por las que se puede generar el error "TypeError: los índices de cadena deben ser enteros".

Hablaremos de estos motivos y sus soluciones en dos subsecciones diferentes.

Cómo solucionar el error TypeError: los índices de cadenas deben ser números enteros en cadenas en Python

Como vimos en la sección anterior, para acceder a un carácter en una cadena, se utiliza el índice del carácter.

Obtenemos el error "TypeError: los índices de cadena deben ser números enteros" cuando intentamos acceder a un carácter usando su valor de cadena en lugar del número de índice.

A continuación se muestra un ejemplo para ayudarle a comprender:

greet = "Hello World!"

print(greet["H"])
# TypeError: string indices must be integers

Como puede ver en el código anterior, recibimos un error que decía TypeError: los índices de cadena deben ser números enteros.

Esto sucedió porque intentamos acceder a H usando su valor ("H") en lugar de su número de índice.

Es decir, saludar["H"] en lugar de saludar[0]. Así es exactamente como solucionarlo.

La solución a esto es bastante simple:

  • Nunca utilice cadenas para acceder a elementos/caracteres cuando trabaje con objetos iterables que requieran el uso de números de índice (enteros) al acceder a elementos/caracteres.

Cómo solucionar el error TypeError: los índices de cadenas deben ser números enteros al cortar una cadena en Python

Cuando se divide una cadena en Python, se devuelve un rango de caracteres de la cadena en función de los parámetros dados (parámetros start y end).

He aquí un ejemplo:

greet = "Hello World!"

print(greet[0:6])
# Hello 

En el código anterior, proporcionamos dos parámetros: 0 y 6. Esto devuelve todos los caracteres dentro del índice 0 y el índice 6.

Obtenemos el error "TypeError: los índices de cadena deben ser números enteros" cuando usamos la sintaxis de segmento incorrectamente.

He aquí un ejemplo para demostrarlo:

greet = "Hello World!"

print(greet[0,6])
# TypeError: string indices must be integers

Es muy fácil pasar por alto el error en el código porque usamos números enteros, pero aún así obtenemos un error. En casos como este, el mensaje de error puede parecer engañoso.

Recibimos este error porque utilizamos la sintaxis incorrecta. En nuestro ejemplo, utilizamos una coma al separar los parámetros start y end: [0,6]. Por eso recibimos un error.

Para solucionar este problema, puede cambiar la coma por dos puntos.

Al dividir cadenas en Python, debe separar los parámetros start y end usando dos puntos: [0:6].

Resumen

En este artículo, hablamos sobre el error "TypeError: los índices de cadenas deben ser números enteros" en Python.

Este error ocurre cuando se trabaja con cadenas de Python por dos razones principales: usar una cadena en lugar de un número de índice (entero) al acceder a un carácter en una cadena y usar la sintaxis incorrecta al dividir cadenas en Python.

Vimos ejemplos que planteaban este error en dos subsecciones y aprendimos cómo solucionarlos.

¡Feliz codificación!

Artículos relacionados