Estoy usando Python 2.6.5. Mi código requiere el uso del signo "más que o igual a". Aquí va:
>>> s = u'\u2265'
>>> print s
>>> ≥
>>> print "{0}".format(s)
Traceback (most recent call last):
File "<input>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2265'
in position 0: ordinal not in range(128)`
¿Por qué recibo este error? ¿Hay una manera correcta de hacer esto? Necesito usar la .format()
función.
python
string
unicode
python-2.x
Equipo
fuente
fuente
from __future__ import unicode_literals
al comienzo de sus archivos fuente.unicode
s necesitanunicode
cadenas de formato.fuente
Un poco más de información sobre por qué sucede eso.
funciona porque
print
usa automáticamente la codificación del sistema para su entorno, que probablemente se configuró en UTF-8. (Puede verificar haciendoimport sys; print sys.stdout.encoding
)>>> print "{0}".format(s)
falla porque
format
intenta hacer coincidir la codificación del tipo al que se llama (no pude encontrar documentación sobre esto, pero este es el comportamiento que he notado). Dado que los literales de cadena son cadenas de bytes codificadas como ASCII en python 2,format
intenta codificars
como ASCII, lo que resulta en esa excepción. Observar:Entonces, esa es básicamente la razón por la que funcionan estos enfoques:
fuente