¿Cómo imprimir un carácter Unicode en Python?

Quiero hacer un diccionario donde las palabras en inglés apuntan a las traducciones al ruso y al francés.

¿Cómo imprimo caracteres Unicode en Python? Además, ¿cómo almacenar los caracteres Unicode en una variable?

Para incluir caracteres Unicode en su código fuente de Python, puede usar caracteres de escape Unicode en la forma \u0123 en su cadena, y prefijar la cadena literal con ‘u’.

Aquí hay un ejemplo que se ejecuta en la consola interactiva de Python:

 >>> print u'\u0420\u043e\u0441\u0441\u0438\u044f' Россия 

Las cadenas declaradas de este modo son variables de tipo Unicode, como se describe en la documentación de Python Unicode .

Si ejecutar el comando anterior no muestra el texto correctamente para usted, tal vez su terminal no sea capaz de mostrar caracteres Unicode.

Para obtener información sobre cómo leer datos de Unicode de un archivo, vea esta respuesta:

Lectura de caracteres de archivo en Python

Imprima un carácter Unicode en Python:

Imprima un carácter Unicode directamente desde el intérprete de Python:

 el@apollo:~$ python Python 2.7.3 >>> print u'\u2713' ✓ 

El carácter Unicode u'\u2713' es una marca de verificación. El intérprete imprime la marca de verificación en la pantalla.

Imprima un carácter Unicode desde un script de Python:

Pon esto en test.py:

 #!/usr/bin/python print("here is your checkmark: " + u'\u2713'); 

Ejecutarlo de esta manera:

 el@apollo:~$ python test.py here is your checkmark: ✓ 

Si no muestra una marca de verificación para usted, entonces el problema podría estar en otra parte, como la configuración del terminal o algo que esté haciendo con la redirección de flujos.

Almacena caracteres Unicode en un archivo:

Guarda esto en el archivo: foo.py:

 #!/usr/bin/python -tt # -*- coding: utf-8 -*- import codecs import sys UTF8Writer = codecs.getwriter('utf8') sys.stdout = UTF8Writer(sys.stdout) print(u'e with obfuscation: é') 

Ejecutarlo y canalizar la salida al archivo:

 python foo.py > tmp.txt 

Abre tmp.txt y mira dentro, ves esto:

 el@apollo:~$ cat tmp.txt e with obfuscation: é 

Por lo tanto, ha guardado unicode e con una marca de ofuscación en un archivo.

Si está intentando print() Unicode y está obteniendo errores de códec ASCII, consulte esta página , cuyo TLDR es export PYTHONIOENCODING=UTF-8 antes de export PYTHONIOENCODING=UTF-8 python (esta variable controla qué secuencia de bytes intenta la consola codificar sus datos de cadena como). Internamente, Python3 usa UTF-8 de manera predeterminada (consulte el CÓMO de Unicode ), por lo que ese no es el problema; puedes poner Unicode en cadenas, como se ve en las otras respuestas y comentarios. Es cuando intentas y envías estos datos a tu consola cuando ocurre el problema. Python piensa que tu consola solo puede manejar ascii. Algunas de las otras respuestas dicen: “Escríbelo en un archivo, primero”, pero tenga en cuenta que especifican la encoding (UTF-8) para hacerlo (por lo tanto, Python no cambia nada por escrito) y luego usan un método para leer. el archivo que solo escupe los bytes sin tener en cuenta la encoding, razón por la cual funciona.

En Python 2, declara cadenas de Unicode con una u , como en u"猫" y usa decode() y encode() para traducir hacia y desde Unicode, respectivamente.

Es bastante más fácil en Python 3. Aquí se puede encontrar una muy buena visión general. Esa presentación me aclaró muchas cosas.

Utilizo Portable winpython en Windows, incluye la consola IPython QT, podría lograr lo siguiente.

 >>>print ("結婚")結婚>>>print ("おはよう")おはよう>>>str = "結婚" >>>print (str)結婚 

el intérprete de la consola debe admitir Unicode para mostrar caracteres Unicode.

Solo una cosa más que aún no ha sido agregada

En Python 2, si desea imprimir una variable que tiene unicode y usar .format() , haga esto (haga que la cadena base a la que se está formateando sea una cadena unicode con u'' :

 >>> text = "Université de Montréal" >>> print(u"This is unicode: {}".format(text)) >>> This is unicode: Université de Montréal 

Esto corrige la impresión UTF-8 en python:

 UTF8Writer = codecs.getwriter('utf8') sys.stdout = UTF8Writer(sys.stdout)