Usé esto:
u = unicode(text, 'utf-8')
Pero obteniendo un error con Python 3 (o ... tal vez simplemente olvidé incluir algo):
NameError: global name 'unicode' is not defined
Gracias.
Usé esto:
u = unicode(text, 'utf-8')
Pero obteniendo un error con Python 3 (o ... tal vez simplemente olvidé incluir algo):
NameError: global name 'unicode' is not defined
Gracias.
Respuestas:
Las cadenas literales son Unicode por defecto en Python3.
Suponiendo que
textes unbytesobjeto, solo usatext.decode('utf-8')unicodede Python2 es equivalente astren Python3, por lo que también puede escribir:si tu prefieres.
fuente
stres unicode, es decir. se "decodifica", por lo que no tiene sentido para llamardecodeen élstr(text, 'utf-8'), el texto debe ser una cadena binaria. por ejemplostr(b'this is a binary', 'utf-8')Lo nuevo en Python 3.0 dice:
Si desea asegurarse de que está generando utf-8, aquí hay un ejemplo de esta página en unicode en 3.0 :
fuente
Como solución alternativa, he estado usando esto:
fuente
try: unicode = str; except: pass.unicode = strya que no fallará ni en 2 ni en 3from six import u as unicodelo que preferiría simplemente porque es más autodocumentado (ya que seis es una capa de compatibilidad de 2/3) queunicode = strAsí solucioné mi problema para convertir caracteres como \ uFE0F, \ u000A, etc. Y también emojis que codificaban con 16 bytes.
fuente
En un programa de Python 2 que usé durante muchos años había esta línea:
Esto no funcionó en Python 3.
Sin embargo, el programa resultó funcionar con:
No recuerdo por qué puse unicode allí en primer lugar, pero creo que fue porque el nombre puede contener letras suecas åäöÅÄÖ. Pero incluso ellos funcionan sin "unicode".
fuente
la forma más fácil en Python 3.x
fuente