как показать китайское слово, а не юникод - PullRequest
1 голос
/ 04 июля 2010

это мой код:

from whoosh.analysis import RegexAnalyzer
    rex = RegexAnalyzer(re.compile(ur"([\u4e00-\u9fa5])|(\w+(\.?\w+)*)"))
    a=[(token.text) for token in rex(u"hi 中 000 中文测试中文 there 3.141 big-time under_score")]

    self.render_template('index.html',{'a':a})

и он показывает это на веб-странице:

[u'hi', u'\u4e2d', u'000', u'\u4e2d', u'\u6587', u'\u6d4b', u'\u8bd5', u'\u4e2d', u'\u6587', u'there', u'3.141', u'big', u'time', u'under_score']

но я хочу показать китайское слово, поэтому я изменяю это:

a=[(token.text).encode('utf-8') for token in rex(u"hi 中 000 中文测试中文 there 3.141 big-time under_score")]

и это показывает:

['hi', '\xe4\xb8\xad', '000', '\xe4\xb8\xad', '\xe6\x96\x87', '\xe6\xb5\x8b', '\xe8\xaf\x95', '\xe4\xb8\xad', '\xe6\x96\x87', 'there', '3.141', 'big', 'time', 'under_score']

так, как показать китайское слово в моем коде,

спасибо

1 Ответ

3 голосов
/ 04 июля 2010

По умолчанию, печать большей встроенной структуры дает repr() каждого из элементов.Если вы хотите вместо str() / unicode(), вам нужно выполнить итерацию последовательности самостоятельно.

a = u"['" + u"', '".join(token.text for token in ...) + u"']"
print a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...