Mi cadena original era de todos modos una cadena Unicode (es decir, el prefijo de una u)
... cual es el problema. No era una "cadena", como tal, sino un "objeto Unicode". Contiene una secuencia de puntos de código Unicode. Estos puntos de código deben, por supuesto, tener alguna representación interna de la que Python tenga conocimiento, pero sea lo que sea, se abstrae y se muestran como esas entidades \uXXXX
cuando print repr(my_u_str)
.
Para obtener una secuencia de bytes que otro programa pueda comprender, debe tomar esa secuencia de puntos de código Unicode y codificarla. Debe decidir sobre la codificación, porque hay mucho para elegir. UTF8 y UTF16 son opciones comunes. ASCII podría serlo también, si cabe. u"abc".encode('ascii')
funciona bien.
Haz my_u_str = u"\u2119ython"
y luego type(my_u_str)
y type(my_u_str.encode('utf8'))
para ver la diferencia de tipos: El primero es <type 'unicode'>
y el segundo es <type 'str'>
. (Debajo de Python 2.5 y 2.6, de todos modos).
Las cosas son diferentes en Python 3, pero como rara vez lo uso, estaría hablando por mi cuenta si traté de decir algo autoritario al respecto.
No es una respuesta directa, pero vale la pena leer este texto: [El mínimo absoluto de cada desarrollador de software Absolutamente, definitivamente debe saber acerca de Unicode y conjuntos de caracteres (Sin excusas!)] (Http: //www.joelonsoftware. com/articles/Unicode.html) por Joel Spolsky – balpha
Programación orientada a la conjetura. Ahora que es un paradigma popular :) – Amnon
en mi experiencia aprendiendo sobre los conceptos básicos (como lo estás haciendo aquí) es más eficaz. – Amnon