python2.7: Почему печать списка китайских языков выглядит как [u'\u4ed6', u'\u6765\u5230', u'\u4e86', u'\u7f51\u6613']?

Я использовал китайский словарь Jieba для сегментации слов.
Когда я печатаю список слов, результат следующий:

#!/usr/bin/env python
# -*- coding: utf-8 -*- 
import jieba
import sys
import jieba


s1 = "他来到了网易杭研大厦!"
seg_list = jieba.cut(s1)
lst1 = ", ".join(seg_list)
print lst1
m =lst1.split(', ')
print m[2]
punct = set(u''':!),.:;?]}¢'"、。〉》」』】〕〗〞︰︱︳﹐、﹒﹔﹕﹖﹗﹚﹜﹞!),.:;?|}︴︶︸︺︼︾﹀﹂﹄﹏、~¢々‖•·ˇˉ―--′’”([{£¥'"‵〈《「『【〔〖([{£¥〝︵︷︹︻︽︿﹁﹃﹙﹛﹝({“‘-—_…''')

filterpuntl = list(filter(lambda x: x not in punct, m))

print filterpuntl[2]

Результат следующий:

他, 来到, 了, 网易, 杭研, 大厦, !
[u'\u4ed6', u'\u6765\u5230', u'\u4e86', u'\u7f51\u6613', u'\u676d\u7814', u'\u5927\u53a6', u'!']
[u'\u4ed6', u'\u6765\u5230', u'\u4e86', u'\u7f51\u6613', u'\u676d\u7814', u'\u5927\u53a6']

Как поменять [u'\u4ed6', u'\u6765\u5230' ...] на китайские иероглифы?

Когда я печатаю один элемент списка, это китайский язык:

print m[2]
print filterpuntl[2]

Результат:

他, 来到, 了, 网易, 杭研, 大厦, !
了
了

1 ответ

Решение

u'\u4ed6' это китайский символ Это просто другое представление, как вы можете написать 0.1 или же 1e-1 для одного и того же номера - это одно и то же, просто с другой внешностью.

Если вы хотите видеть правильные символы при печати списка и т. Д. (Который выдает repr() Форма объектов), переключитесь на Python 3:

$ python3
Python 3.5.2 (default, Aug 18 2017, 17:48:00) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print(['\u4ed6'])
['他']
Другие вопросы по тегам