HOWTO · Python

Obtenga la longitud y el tamaño de la cadena en Python

Este tutorial demuestra cómo obtener la longitud de una cadena en Python.

En esta página

Usa len(text) para obtener el número de elementos de una cadena de Python. Usa sys.getsizeof(text) cuando necesites conocer el tamaño superficial en memoria del objeto cadena. Son mediciones distintas: contar caracteres no es contar bytes, y el tamaño en memoria de un objeto no es la longitud de su texto.

Obtén el número de caracteres de una cadena con len()

La función integrada len() es la forma habitual y eficiente de contar los elementos de una cadena. Cuenta los espacios y los signos de puntuación, además de las letras y los dígitos. En las cadenas de Python, esos elementos son puntos de código Unicode. Por eso, un símbolo visible formado por varios puntos de código —como una letra seguida de un acento combinante o una secuencia de emojis unidos— puede parecer un solo grafema para quien lo lee y, aun así, aportar varios elementos a len().

Ejecuta este ejemplo. El código y las etiquetas visibles del ejemplo se conservan en inglés.

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

text = "Hello, World!"
print(len(text))

Salida:

13

Para contar directamente, pasa la propia cadena a len(). Python interpreta los escapes de los literales de cadena antes de que la función reciba la cadena: "\n" representa un salto de línea, mientras que "\\n" representa una barra invertida literal seguida de la letra n. len() cuenta la cadena resultante; no interpreta escapes.

Cuenta caracteres manualmente cuando sea necesario

La iteración manual puede ser útil cuando el conteo forma parte de una operación más amplia. Cada iteración sobre una cadena produce un punto de código, así que sumar uno en cada iteración da el mismo número de elementos que len(), pero requiere un tiempo proporcional a la longitud de la cadena. Para las comprobaciones habituales de longitud, prefiere len().

Si primero hay que normalizar o recortar el texto, transfórmalo y luego mide el resultado. Por ejemplo, text.strip() devuelve una cadena nueva sin los espacios en blanco iniciales ni finales; len(text.strip()) cuenta esa nueva cadena. No modifica text. Del mismo modo, pasar a minúsculas puede cambiar el número de puntos de código en algunos textos Unicode, así que mide después de la transformación cuando ese sea el valor que necesitas para tu tarea.

Mide el tamaño en memoria de un objeto cadena

Para estimar en bytes el tamaño superficial de un objeto, importa getsizeof de sys y pásale la cadena. El tamaño devuelto incluye el propio objeto cadena, pero no otros objetos a los que pueda hacer referencia. No es un conteo de caracteres ni el número de bytes que se obtendrían al codificar el texto como UTF-8. Para medir los datos codificados, codifica la cadena y mide el valor bytes resultante.

El código y las etiquetas visibles del ejemplo se conservan en inglés.

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import sys

text = "Hello, World!"
size_in_bytes = sys.getsizeof(text)
print(size_in_bytes)

Salida:

54

El resultado observado para el tamaño en memoria depende de la implementación y de la versión; no consideres que 54 bytes sea un valor universal. Usa len() para conocer la longitud de una cadena y sys.getsizeof() cuando la pregunta se refiera específicamente al tamaño superficial de ese objeto.