2012-06-24 27 views
10

Obtengo una cadena de una función que se representa como u'\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0', pero para procesarla necesito que sea de cadena de bytes (como '\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0').Convertir cadena de unicode a cadena de bytes

¿Cómo puedo convertirlo sin cambios?

Mi mejor estimación hasta ahora es tomar s.encode('unicode_escape'), que devolverá '\\xd0\\xbc\\xd0\\xb0\\xd1\\x80\\xd0\\xba\\xd0\\xb0' y procesará cada 5 caracteres para que '\ xd0' se convierta en un carácter representado como '\ xd0'.

Respuesta

22

ISO 8859-1 (también conocido como Latin-1) mapea los primeros 256 puntos de código Unicode con sus valores de bytes.

>>> u'\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0'.encode('latin-1') 
'\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0' 
+1

Eso es inteligente. Mi primera opción sería 'bytes (map (ord, x))' pero puede ser mucho más lenta ... – JBernardo

+0

confirmó que esto produce el resultado deseado – bryce

+0

@JBernardo Eso solo funciona en python 3; no está claro en el texto, pero las probabilidades son que OP está en python 2. – zwol

Cuestiones relacionadas