Почему, когда я что-то печатаю, всегда рядом стоит юникод? (Python) - PullRequest
4 голосов
/ 19 ноября 2009
[u'Iphones', u'dont', u'receieve', u'messages']

Есть ли способ напечатать его без "u" перед ним?

Ответы [ 2 ]

9 голосов
/ 19 ноября 2009

То, что вы видите, - это __repr__() представление строки Unicode, которое включает в себя символ u, чтобы прояснить ситуацию. Если вы не хотите, чтобы вы могли напечатать объект (используя __str__) - это работает для меня:

print [str(x) for x in l]

Вероятно, лучше прочитать Python Unicode и кодировать, используя нужный кодек Unicode:

print [x.encode() for x in l]

[править]: чтобы уточнить repr и почему он есть - цель repr - предоставить удобное строковое представление, «вернуть строку, которая выдаст объект с тем же значением при передаче в eval ()» , Т.е. вы можете скопировать и вставить напечатанный вывод и получить тот же объект (список строк Unicode).

4 голосов
/ 19 ноября 2009

Python содержит строковые классы как для строк Юникода, так и для обычных строк. Символ u перед строкой указывает, что это строка в кодировке Unicode.

>>> mystrings = [u'Iphones', u'dont', u'receieve', u'messages']
>>> [str(s) for s in mystrings]
['Iphones', 'dont', 'receieve', 'messages']
>>> type(u'Iphones')
<type 'unicode'>
>>> type('Iphones')
<type 'str'>

См. http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-buffer-xrange для получения дополнительной информации о типах строк, доступных в Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...