Si su intención es la de convertir un conjunto de cadenas estándar a Unicode, se puede asignar esa función en su lista:
lst = ["aaa", "bbb", "ccc"]
map(unicode, lst)
que da
[u"aaa", u"bbb", u"ccc"]
Sin embargo, si lst
contiene un no ASCII cadena de caracteres, tendrá que prefijar esa cadena en particular con el u
. Si no lo hace, obtendrá este error en la conversión:
lst = ["\xe4"]
map(unicode,lst)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
Como se señaló en los comentarios, esta respuesta es diferente para Python 2.x o 3.x. En Python 3, everything changes:
Todo lo que creía conocer sobre datos binarios y Unicode ha cambiado. Python 3.0 usa los conceptos de texto y datos (binarios) en lugar de cadenas Unicode y cadenas de 8 bits. Todo el texto es Unicode; sin embargo, el código Unicode se representa como datos binarios. El tipo utilizado para contener texto es str, el tipo utilizado para contener datos es bytes. La mayor diferencia con la situación 2.x es que cualquier intento de mezclar texto y datos en Python 3.0 genera TypeError, mientras que si mezclara cadenas Unicode y de 8 bits en Python 2.x, funcionaría si el de 8 bits cadena resultó contener solo bytes de 7 bits (ASCII), pero obtendría UnicodeDecodeError si contenía valores que no fueran ASCII. Este comportamiento específico del valor ha causado numerosas caras tristes a lo largo de los años.
Esto depende de que el uso de Python 2 o Python 3. –
estoy usando '' Python 2.7.2 +, pero si usted sabe la respuesta para ambos podría ser útil para el futuro – xralf
En Python 3.x todos los strings son unicode por defecto, y cualquier canal que trate con E/S de texto (archivos, base de datos, impresión) requiere una codificación explícita o usa la codificación de sistema por defecto. – jsbueno