HOWTO · Python
Imprimir caracteres Unicode en Python
Este tutorial demuestra cómo imprimir caracteres Unicode en Python
En esta página
Las cadenas de Python pueden contener caracteres Unicode directamente, y print() los escribe en la salida estándar. Si conoces el punto de código hexadecimal o el nombre Unicode de un carácter, puedes incluirlo en una cadena mediante una secuencia de escape, crearla con chr() o buscarla con unicodedata.lookup().
Un punto de código Unicode se escribe como U+ seguido de un número hexadecimal. Por ejemplo, U+2612 representa ☒ y U+7687 representa 皇. Los tres métodos siguientes crean la misma cadena: ☒皇ÉÉ.
Método 1: usar secuencias de escape Unicode
En un literal de cadena de Python, a \u le siguen exactamente cuatro dígitos hexadecimales, mientras que a \U le siguen ocho. Usa \u para puntos de código hasta U+FFFF y \U para los que superan ese límite. Los ceros iniciales adicionales de la forma \U forman parte de su longitud fija de ocho dígitos.
Ejecuta este ejemplo:
unicode_text = "\u2612\u7687\u00C9\u00C9"
print(unicode_text)
☒皇ÉÉ
Cada secuencia de escape aporta un carácter a la cadena. Python interpreta estas secuencias al leer el literal, por lo que el texto impreso contiene los caracteres y no la notación de escape.
Método 2: usar la función chr()
Usa chr() cuando tu código ya disponga de puntos de código enteros, por ejemplo, valores leídos de datos. Devuelve una cadena de un carácter para el punto de código indicado; concatena varias de esas cadenas para formar una más larga.
unicode_text = chr(0x2612) + chr(0x7687) + chr(0x00C9) + chr(0x00C9)
print(unicode_text)
☒皇ÉÉ
El prefijo 0x indica que cada entero está expresado en hexadecimal. La cadena resultante se puede tratar como cualquier otra cadena de Python.
Método 3: usar nombres Unicode
Si te resulta más fácil recordar el nombre de un carácter que su número, usa unicodedata.lookup() del módulo estándar unicodedata de Python. Devuelve el carácter asociado al nombre Unicode exacto. Une las cadenas devueltas y pasa el resultado a print():
import unicodedata
unicode_text = (
unicodedata.lookup("BALLOT BOX WITH X")
+ unicodedata.lookup("CJK UNIFIED IDEOGRAPH-7687")
+ unicodedata.lookup("LATIN CAPITAL LETTER E WITH ACUTE")
+ unicodedata.lookup("LATIN CAPITAL LETTER E WITH ACUTE")
)
print(unicode_text)
☒皇ÉÉ
Usa la grafía que aparece en la lista de nombres de caracteres Unicode. No se puede buscar un nombre mal escrito o desconocido, así que comprueba el nombre antes de usarlo.
Consejos adicionales
- Para que los caracteres elegidos se muestren como esperas, el terminal, el editor o la fuente deben admitirlos. Si ves cuadros o signos de interrogación, comprueba el entorno de visualización; la cadena aún puede contener los caracteres previstos.
- Consulta una lista de caracteres Unicode cuando necesites conocer un punto de código o el nombre de un carácter. Respeta los dígitos hexadecimales y la longitud de la secuencia: cuatro dígitos después de
\uu ocho después de\U. - También puedes escribir directamente caracteres Unicode visibles en un archivo fuente de Python, siempre que el archivo y el entorno de edición los conserven correctamente.
Conclusión
Usa secuencias de escape si conoces los puntos de código hexadecimales, chr() si tu código contiene valores enteros y unicodedata.lookup() si tienes los nombres Unicode. Los tres métodos crean cadenas normales de Python que print() puede enviar a la salida.