2010-07-13 18 views
127

Estoy usando Python 2.6.5. Mi código requiere el uso del signo "más que o igual a". Aquí va:Python: Usando .format() en una cadena escapada en Unicode

>>> 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é me sale este error? ¿Hay una manera correcta de hacer esto? Necesito usar la función .format().

Respuesta

202

apenas hacer la segunda cadena también una cadena Unicode

>>> s = u'\u2265' 
>>> print s 
≥ 
>>> print "{0}".format(s) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2265' in position 0: ordinal not in range(128) 
>>> print u"{0}".format(s) 
≥ 
>>> 
+32

@Kit: Si desea que todos los literales a ser Unicode (como en Python 3), se puso de '__future__ unicode_literals' importación a principios de los archivos de origen. – Philipp

+1

Sí, esto te servirá si estás acostumbrado al formato% ya que este "% s"% u "\ u2265" funciona, pero el formato "{}" (u "\ u2265") generará una excepción. – Hylidan

+1

qué cosa tan simple ... qué terrible dolor de cabeza tuve hasta que encontré este poco de iluminación ... –

54

unicode s necesidad unicode cadenas de formato.

>>> print u'{0}'.format(s) 
≥ 
Cuestiones relacionadas