Tener una cadena UTF-8 como esto:¿Cómo consigo un tamaño de una cadena UTF-8 en Bytes con Python
mystring = "işğüı"
es posible conseguir su tamaño (en la memoria) en bytes con Python (2.5)?
Tener una cadena UTF-8 como esto:¿Cómo consigo un tamaño de una cadena UTF-8 en Bytes con Python
mystring = "işğüı"
es posible conseguir su tamaño (en la memoria) en bytes con Python (2.5)?
Suponiendo que se refiere al número de bytes UTF-8 (y no a los bytes adicionales que Python requiere para almacenar el objeto), es el mismo que para la longitud de cualquier otra cadena. Un literal de cadena en Python 2.x es una cadena de bytes codificados, no caracteres Unicode.
cadenas de bytes:
>>> mystring = "işğüı"
>>> print "length of {0} is {1}".format(repr(mystring), len(mystring))
length of 'i\xc5\x9f\xc4\x9f\xc3\xbc\xc4\xb1' is 9
cadenas Unicode:
>>> myunicode = u"işğüı"
>>> print "length of {0} is {1}".format(repr(myunicode), len(myunicode))
length of u'i\u015f\u011f\xfc\u0131' is 5
Es una buena práctica para mantener todas sus cadenas en Unicode, y sólo codifican la hora de comunicarse con el mundo exterior. En este caso, puede usar len(myunicode.encode('utf-8'))
para encontrar el tamaño que sería después de la codificación.
Bueno, obtengo 9 cuando '' len (mystring) ' – NullUserException
esperaba obtener 5 – NullUserException
Si lo convierte a unicode literal, obtiene 5' 'mystring = u" işğüı "'. de otro modo, se convierte en ''i \ xc5 \ x9f \ xc4 \ x9f \ xc3 \ xbc \ xc4 \ xb1'' – aaronasterling