Quiero hacer un diccionario donde las palabras en inglés apunten a traducciones al ruso y al francés.
¿Cómo imprimo caracteres Unicode en Python? Además, ¿cómo se almacenan los caracteres Unicode en una variable?
Quiero hacer un diccionario donde las palabras en inglés apunten a traducciones al ruso y al francés.
¿Cómo imprimo caracteres Unicode en Python? Además, ¿cómo se almacenan los caracteres Unicode en una variable?
Respuestas:
Para incluir caracteres Unicode en su código fuente de Python, puede usar caracteres de escape Unicode en el formulario \u0123
de su cadena y anteponer la literal de cadena con 'u'.
A continuación, se muestra un ejemplo que se ejecuta en la consola interactiva de Python:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
Las cadenas declaradas así 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, quizás su terminal no sea capaz de mostrar caracteres Unicode.
Para obtener información sobre cómo leer datos Unicode de un archivo, consulte esta respuesta:
mystr
? entonces, ¿cómo imprimirlo?
print your_unicode_characters.encode('utf-8')
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');
Ejecútelo así:
el@apollo:~$ python test.py
here is your checkmark: ✓
Si no muestra una marca de verificación, 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 transmisión.
Almacene caracteres Unicode en un archivo:
Guarde 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: é')
Ejecútelo y canalice la salida al archivo:
python foo.py > tmp.txt
Abra tmp.txt y mire dentro, verá 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á intentandoprint()
usar Unicode y obtiene errores de códec ascii , consulte esta página , cuyo TLDR se realiza export PYTHONIOENCODING=UTF-8
antes de iniciar Python (esta variable controla la secuencia de bytes que la consola intenta codificar sus datos de cadena). Internamente, Python3 usa UTF-8 por defecto (vea el COMO de Unicode) entonces ese no es el problema; simplemente puede poner Unicode en cadenas, como se ve en las otras respuestas y comentarios. Es cuando intenta sacar estos datos a su consola cuando ocurre el problema. Python cree que su consola solo puede manejar ascii. Algunas de las otras respuestas dicen, "Escríbalo en un archivo, primero", pero tenga en cuenta que especifican la codificación (UTF-8) para hacerlo (por lo tanto, Python no cambia nada por escrito) y luego usan un método para leer el archivo que simplemente escupe los bytes sin tener en cuenta la codificación, por lo que funciona.
En Python 2, declaras cadenas unicode con a 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 descripción general . Esa presentación me aclaró muchas cosas.
Teniendo en cuenta que este es el primer resultado de desbordamiento de pila cuando Google busca este tema, vale la pena mencionar que el prefijo u
de cadenas Unicode es opcional en Python 3. (el ejemplo de Python 2 se copió de la respuesta superior)
Python 3 (ambos funcionan):
print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')
Python 2:
print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Utilizo Portable winpython en Windows, incluye la consola IPython QT, podría lograr lo siguiente.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
su intérprete de consola debe ser compatible con Unicode para poder mostrar caracteres Unicode.
Solo una cosa más que aún no se ha agregado
En Python 2, si desea imprimir una variable que tiene unicode y usar .format()
, haga esto (haga que la cadena base 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
Reemplace '+' con '000' . Por ejemplo, 'U + 1F600' se convertirá en 'U0001F600' y antepondrá el código Unicode con "\" e imprimirá. Ejemplo:
>>> print("Learning : ", "\U0001F40D")
Learning : 🐍
>>>
Marque esto, tal vez ayude a Python Unicode Emoji