python2.7:为什么打印中文列表看起来像[u' \ u4ed6',u' \ u6765 \ u5230',u' \ u4e86',u' \ u7f51 \ u6613']?

时间:2017-09-27 07:59:06

标签: python-2.7 nlp

我使用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 个答案:

答案 0 :(得分:2)

u'\u4ed6' 是一个汉字。它只是一个不同的表示形式,就像你可以为同一个数字写0.11e-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'])
['他']