2012-11-22 51 views
3

我试图存储一个字符串,并用nltk在Python中标记它后。但我不明白为什么在标记它(它创建一个列表)后,我不能看到列表中的字符串.. 任何人都可以帮助我PLZ?希腊编码在PYTHON

下面是代码:

#a="Γεια σου" 
#b=nltk.word_tokenize(a) 
#b 
['\xc3\xe5\xe9\xe1', '\xf3\xef\xf5'] 

我只是希望能够看到定期列表的内容..

THX提前

回答

0

你可以看到字符串。由于您的终端编码设置,字符由转义序列表示。配置您的终端接受输入,并以UTF-8格式显示输出。

+0

而我怎样才能配置它们?(我使用GUI python shell) 如果我这样工作,我将能够在这些列表上使用stemmers和pos-taggers被创建? – GreekBurner

+0

我不使用GUI外壳。请参阅文档。 – Marcin

+1

不,字符(不是字符)由于终端编码而不能用转义序列表示;这只是他们的'repr'esentation。在正确配置的终端中观察'u'ä''与'print(u'ä')'与'print(repr(u'ä'))'。 – phihag

5

您正在使用Python 2,其中前缀的引号表示一个字节,而不是一个字符字符串(如果你不知道的区别,read this)。或者切换到Python 3,其中该已被固定的,或与u前缀的所有字符串和打印的字符串(相对于示出其repr,它不同于在Python 2.x的):

>>> import nltk 
>>> a = u'Γεια σου' 
>>> b = nltk.word_tokenize(a) 
>>> print(u'\n'.join(b)) 
Γεια 
σου 
+0

我的问题不是“打印”解决方案...我只是想看到b的内容,所以我可以稍后使用pos-tag和stemming等语言功能处理它们。这种方式可能吗? – GreekBurner

+0

@GreekBurner那么,你所看到*是* b的内容,而不是你期望的表示。您可以切换到Python 3,其中“'Γειασου''的默认表示是'Γειασου'。 – phihag

+0

Thx但我使用的nltk包,只支持Python 2 .. :( 无论如何thx – GreekBurner