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_literalsal comienzo de sus archivos fuente.unicodes necesitanunicodecadenas de formato.fuente
Un poco más de información sobre por qué sucede eso.
funciona porque
printusa 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
formatintenta 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,formatintenta codificarscomo ASCII, lo que resulta en esa excepción. Observar:Entonces, esa es básicamente la razón por la que funcionan estos enfoques:
fuente