2016-11-18 61 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