u'\uNNNN'
является ASCII-безопасной версией строкового литерала u'з'
:
>>> print u'\u0437'
з
Однако это будет отображаться только для вас, если ваша консоль поддерживает символ, который вы пытаетесь напечатать.Попытка описанного выше на консоли при установке в Западной Европе Windows не удалась:
>>> print u'\u0437'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0437' in position 0: character maps to <undefined>
Поскольку получить консоль Windows для вывода Unicode сложно, функция Python 2 repr
всегда выбирает ASCII-безопасную буквальную версию.
Ваш оператор print
выводит версию repr
, а не печатает символы напрямую, потому что они находятся внутри списка символов вместо строки.Если бы вы сделали print
для каждого из членов списка, вы бы получили символы, выведенные напрямую, а не представленные в виде u'...'
строковых литералов.