在python 2.7中打印阿拉伯语单词和列表

时间:2018-05-14 20:50:06

标签: python unicode nltk arabic

我正在使用anaconda Python 2.7进行阿拉伯文本分类 当我打印单词或列表或单词时,它出现在Unicode中 我想打印真正的阿拉伯语单词 列表contians [阿拉伯语句子,标签]

from nltk.corpus.reader import CategorizedPlaintextCorpusReader
reader = CategorizedPlaintextCorpusReader('mypath\\', r'(\w+)\.txt', cat_pattern=r'(\w+)\.txt',encoding='utf-8')
document=reader.words('fileid')
     

documen [0]

输出

  

[[U '\ u0631 \ u0626 \ u064a \ u0633',   u'\ u0627 \ u0644 \ u0624 \ u0624 \ u0644 \ u0645 \ u0627 \ u0646',...],'政治']

2 个答案:

答案 0 :(得分:0)

在我的脑海中,我认为这是因为Python 2.7是在ASCII焦点下编写的(因此,str(u'\u0631')产生UnicodeEncodeError,因为ر字符不存在于ASCII。print u'\u0631'可能有效,因为它只是将unicode直接发送到控制台,控制台配备了处理unicode渲染。

答案 1 :(得分:0)

这就是Python 2在打印列表时的工作方式。打印单个字符串或更新到Python 3:

Python 2

>>> s = [[u'\u0631\u0626\u064a\u0633', u'\u0627\u0644\u0628\u0631\u0644\u0645\u0627\u0646'], 'Politic']
>>> print(s)
[['رئيس', 'البرلمان'], 'Politic']
>>> print(s[0][0])
رئيس
>>> print(s[0][1])
البرلمان

Python 3

ascii()

您在Python 3中使用>>> print(ascii(s)) [['\u0631\u0626\u064a\u0633', '\u0627\u0644\u0628\u0631\u0644\u0645\u0627\u0646'], 'Politic'] 得到旧行为:

if (process.browser) {
  require('external_library')
}