Avere una stringa UTF-8 in questo modo:Come faccio ad avere una dimensione di una stringa UTF-8 in byte con Python
mystring = "işğüı"
è possibile ottenere la sua dimensione (in memoria) in byte con Python (2,5)?
Avere una stringa UTF-8 in questo modo:Come faccio ad avere una dimensione di una stringa UTF-8 in byte con Python
mystring = "işğüı"
è possibile ottenere la sua dimensione (in memoria) in byte con Python (2,5)?
Assumendo si intende il numero di byte UTF-8 (e non i byte extra richiesti da Python per memorizzare l'oggetto), è lo stesso della lunghezza di qualsiasi altra stringa. Una stringa letterale in Python 2.x è una stringa di byte codificati, non caratteri Unicode.
stringhe di byte:
>>> 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
stringhe 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
E 'buona pratica per mantenere tutti i tuoi stringhe in Unicode, e solo la codifica durante la comunicazione con il mondo esterno. In questo caso, è possibile utilizzare len(myunicode.encode('utf-8'))
per trovare la dimensione che sarebbe dopo la codifica.
Bene, ottengo 9 quando faccio 'len (mystring)' – NullUserException
Mi aspettavo di ottenere 5 – NullUserException
Se lo converti in un letterale unicode ottieni 5 '' mystring = u "işğüı" '. in altre parole, diventa "i \ xc5 \ x9f \ xc4 \ x9f \ xc3 \ xbc \ xc4 \ xb1'' – aaronasterling