печатать арабские слова и список в Python 2.7 - PullRequest
0 голосов
/ 14 мая 2018

Я использую anaconda Python 2.7 для классификации арабского текста, когда я печатаю слова или список или слова, которые появляются в Юникоде. Я хочу напечатать настоящие арабские слова, содержащиеся в списке [арабское предложение, метка]

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

documentmen [0]

вывод

[[u '\ u0631 \ u0626 \ u064a \ u0633', u '\ u0627 \ u0644 \ u0628 \u0631 \ u0664 \ u0627 \ u0646 ', ...],' Политик ']

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Так работает Python 2 при печати списков. Распечатайте отдельные строки или обновите до Python 3:

Python 2

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

Python 3

>>> 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])
البرلمان

Вы получаете старое поведение с ascii() в Python 3:

>>> print(ascii(s))
[['\u0631\u0626\u064a\u0633', '\u0627\u0644\u0628\u0631\u0644\u0645\u0627\u0646'], 'Politic']
0 голосов
/ 15 мая 2018

Вдобавок к моей голове, я бы предположил, что это потому, что Python 2.7 был написан в фокусе ASCII (как таковой, str(u'\u0631') возвращает UnicodeEncodeError, так как символ ر не существует в ASCII. print u'\u0631' вероятно, работает, потому что он просто отправляет юникод прямо на консоль, которая оборудована для обработки юникода.

...