open - python unicode utf-8
Cómo imprimir caracteres Unicode en Python? (5)
Quiero hacer un diccionario donde las palabras en inglés indiquen traducciones rusas y francesas.
¿Cómo imprimo caracteres Unicode en Python? Además, ¿cómo almacena caracteres Unicode en una variable?
Imprima un caracter 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'');
Ejecútelo así:
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 otro lugar, como la configuración de la terminal o algo que esté haciendo con la redirección de flujo.
Almacenar 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
Abre tmp.txt y mira adentro, 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.
En Python 2, declaras cadenas unicode con u
, como en u"猫"
y usas decode()
y encode()
para traducir a y desde unicode, respectivamente.
Es bastante más fácil en Python 3. Se puede encontrar una muy buena descripción here . Esa presentación me clarificó muchas cosas.
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 el literal de cadena 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 esta manera 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 la lectura de datos Unicode desde un archivo, consulte esta respuesta:
Utilizo winpython portátil en Windows, incluye la consola IPython QT, pude lograr lo siguiente.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
el intérprete de la consola debe ser compatible con Unicode para mostrar los caracteres Unicode.
Si está intentando print()
Unicode y obtener errores del códec ascii , consulte esta página , cuyo TLDR se export PYTHONIOENCODING=UTF-8
antes de export PYTHONIOENCODING=UTF-8
python (esta variable controla qué secuencia de bytes intenta la consola codifica tus datos de cadena como) Internamente, Python3 usa UTF-8 por defecto (vea el CÓMO Unicode ), así que ese no es el problema; simplemente puede poner Unicode en cadenas, como se ve en las otras respuestas y comentarios. Es cuando intentas obtener estos datos en tu consola que el problema ocurre. Python cree 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 codificación (UTF-8) para hacerlo (así, Python no cambia nada por escrito), y luego usa un método para leer el archivo que simplemente escupe los bytes sin tener en cuenta la codificación, por eso funciona.