Python: Using.format () na unikodowym łańcuchu znaków

Używam Pythona 2.6.5. Mój kod wymaga użycia znaku "więcej lub równo". Zaczyna się:

>>> 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)`  

Dlaczego dostaję ten błąd? Czy jest na to dobry sposób? Muszę użyć funkcji .format().

Author: Dima Tisnek, 2010-07-13

2 answers

Wystarczy, że drugi ciąg będzie również ciągiem 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)
≥
>>> 
 216
Author: Mad Scientist,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-13 08:34:48

unicodes need unicode format strings.

>>> print u'{0}'.format(s)
≥
 61
Author: Ignacio Vazquez-Abrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-13 08:35:36