una separar reemplazar por funcion eliminar contar comparar caracteres caracter cadenas cadena python string string-length

separar - reemplazar caracteres en python



¿Cómo obtener el tamaño de una cadena en Python? (4)

Por ejemplo, recibo una cadena:

str = "please answer my question"

Quiero escribirlo en un archivo.

Pero necesito saber el tamaño de la cadena antes de escribir la cadena en el archivo. ¿Qué función puedo usar para calcular el tamaño de la cuerda?


Python 3. *:

La respuesta del usuario225312 es correcta:

A. Para contar la cantidad de caracteres en el objeto str , puede usar la función len() :

>>> print(len(''please anwser my question'')) 25

B. Para obtener el tamaño de memoria en bytes asignado al objeto store str , puede usar la función sys.getsizeof()

>>> from sys import getsizeof >>> print(getsizeof(''please anwser my question'')) 50

Python 2. *:

Se está complicando para Python 2. *.

R. La función len() en Python 2 devuelve el recuento de bytes asignados para almacenar caracteres codificados en un objeto str .

A veces será igual al recuento de caracteres:

>>> print(len(''abc'')) 3

Pero a veces, no:

>>> print(len(''йцы'')) #String contains cyrillic symbols 6

Eso es porque str puede usar codificación de longitud variable internamente. Entonces, para contar caracteres en str , debes saber qué codificación está usando tu objeto str . Luego puede convertirlo en unicode y obtener el conteo de caracteres:

>>> print(len(''йцы''.decode(''utf8''))) #String contains Cyrillic symbols 3

B. La función sys.getsizeof() hace lo mismo que en Python 3 - devuelve el recuento de bytes asignados para almacenar todo el objeto de cadena

>>> print(getsizeof(''йцы'')) 27 >>> print(getsizeof(''йцы''.decode(''utf8''))) 32

PD He probado mis ejemplos de código en Anaconda Python en Windows de 32 bits


La forma más pitonica es usar el len() . Tenga en cuenta que el carácter ''/' en las secuencias de escape no se cuenta y puede ser peligroso si no se usa correctamente.

>>> len(''foo'') 3 >>> len(''/foo'') 3 >>> len(''/xoo'') File "<stdin>", line 1 SyntaxError: (unicode error) ''unicodeescape'' codec can''t decode bytes in position 0-1: truncated /xXX escape


Si está hablando de la longitud de la cadena, puede usar len() :

>>> s = ''please answer my question'' >>> len(s) # number of characters in s 25

Si necesita el tamaño de la cadena en bytes, necesita sys.getsizeof() :

>>> import sys >>> sys.getsizeof(s) 58

Además, no llame a su cadena str . Sombrea la función incorporada str() .


>>> s = ''abcd'' >>> len(s) 4