2016-11-18 55 views
0

我正在处理telugu文本以分析几个文本标记。Python可读格式的非英文(telugu)文本

>>> sent = "నా పేరు కరీం ఉంది. నేను భారత ఆహార ప్రేమ.".decode('utf-8')  
>>> text = sent 
>>> text = nltk.word_tokenize(text) 
>>> result = nltk.pos_tag(text) 
>>> for val in result: 
...  print list(val)[0], list(val)[1] 
... 
నా JJ 
పేరు NNP 
కరీం NNP 
ఉంది NNP 
. . 
నేను VB 
భారత JJ 
ఆహార NNP 
ప్రేమ NNP 

这样我可以看到在泰卢固语的结果。

对于同样的文字,当我尝试这种方式时,它给出了unicode字符串的结果。 如何在telugu打印令牌?

>>> s = "నా పేరు కరీం ఉంది. నేను భారత ఆహార ప్రేమ.".decode('utf-8') 
>>> res = s.split(' ') 
>>> res[0] 
u'\u0c28\u0c3e' 
>>> type(res[0]) 
<type 'unicode'> 
>>> res[0].encode('ascii') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) 
>>> res[0].encode('utf-8') 
'\xe0\xb0\xa8\xe0\xb0\xbe' 

编辑:

print res[0]正确地给了它。但是,当我执行把这个代码放入.py脚本并运行它。它给

[email protected]:~/Documents/codes$ python test.py 
    File "test.py", line 1 
SyntaxError: Non-ASCII character '\xe0' in file test.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 

test.py包含:

s = "నా పేరు కరీం ఉంది. నేను భారత ఆహార ప్రేమ.".decode('utf-8') 
a = s.split() 
for i in a: 
    print i 
+2

尝试'打印清晰度[0]'来代替。 – nu11p01n73R

+0

你的问题是什么?为什么不只是'print()'结果:'print(res [0])'? – Leon

+0

对不起,我的错。打印给它正确。但问题仍然存在。我很感激,如果你可以看到有问题的编辑 – user123

回答

2

因为我没有泰卢固语可以在我的控制台最简单的答案是在浏览器中使用Jupyter运行你的Python会话 - 这样你摆脱了很多的问题围绕着终端的字符集等

然后我可以简单地print结果:

s = "నా పేరు కరీం ఉంది. నేను భారత ఆహార ప్రేమ.".decode('utf-8') 
a = s.split() 
for i in a: 
    print(i) 
నా 
పేరు 
కరీం 
ఉంది. 
నేను 
భారత 
ఆహార 
ప్రేమ. 

注意,让这样的事情到一个脚本文件,当你需要开始与魔纹文件:

#!/usr/bin/env python 
#coding:utf-8 

已经推断,OP正在运行python2我已经尝试和发现 - 在支持UTF-8终端 - 下面给出的结果看起来从脚本文件运行时为好:

#!/usr/bin/env python 
# coding: utf-8 
from __future__ import print_function 
import nltk 

s = "నా పేరు కరీం ఉంది. నేను భారత ఆహార ప్రేమ." #.decode('utf-8') 

a = s.split() 
for i in a: 
    print(i) 

text = nltk.word_tokenize(s.decode('utf-8')) 
result = nltk.pos_tag(text) 
for val in result: 
    print (list(val)[0].encode('utf-8'), list(val)[1]) 

$ python Untitled2.py 
నా 
పేరు 
కరీం 
ఉంది. 
నేను 
భారత 
ఆహార 
ప్రేమ. 
నా JJ 
పేరు NNP 
కరీం NNP 
ఉంది NNP 
. . 
నేను VB 
భారత JJ 
ఆహార NNP 
ప్రేమ NNP 
. . 
+0

谢谢,在Jupyer,它运作良好。但大多数时候我需要编写python脚本并在终端上运行它。没有办法摆脱这个问题,如果我们与终端做? – user123

+1

你显然有一个为泰卢固语设置的终端,你是否尝试过一个简单的'print(res [0])'来输出它? –

+1

如果你的终端支持泰卢固语,那么同样的事情(即'print')将会起作用。我的终端支持各种Unicode字符,没有任何特殊的配置。也许你也是。 – RJHunter