¿Cuántos bytes tiene una cadena

¿Hay alguna función que me diga cuántos bytes ocupa una cadena en la memoria?

Necesito establecer un tamaño de un búfer de socket para transferir toda la cadena a la vez.

import sys sys.getsizeof(s) # getsizeof(object, default) -> int # Return the size of object in bytes. 

Pero en realidad necesitas saber su longitud representada, por lo que algo como len(s) debería ser suficiente.

Si es un Python 2.x str , consigue su len . Si es un str Python 3.x (o un unicode Python 2.x), primero codifique en bytes (o un str , respectivamente) usando su encoding preferida ( 'utf-8' es una buena opción) y luego obtenga el len de los bytes codificados / str objeto.


Por ejemplo, los caracteres ASCII usan 1 byte cada uno:

 >>> len("hello".encode("utf8")) 5 

mientras que los chinos usan 3 bytes cada uno:

 >>> len("你好".encode("utf8")) 6