处理 Python 中的阿拉伯语文本
Handling Arabic text in Python
我有以下 Python 2.7 代码:
mydoclist = ['جوليا تحبني اكثر من ليندا','جين تحبني اكثر من جوليا','احمد يحب كرة السلة اكثر من كرة الطاولة']
from collections import Counter
for doc in mydoclist:
tf = Counter()
for word in doc.split():
tf[word] +=1
print tf.items()
我得到以下输出:
[(u'\u062a\u062d\u0628\u0646\u064a', 1), (u'\u0645\u0646', 1), (u'\u062c \u0648\u0644\u064a\u0627', 1), (u'\u0644\u064a\u0646\u062f\u0627', 1), (u'\u0627\u0643\u062b\u0631', 1)]
[('\xd8\xac\xd9\x8a\xd9\x86', 1), ('\xd9\x85\xd9\x86', 1), ('\xd8\xac\xd9\x88\xd9\x84\xd9\x8a\xd8\xa7', 1), ('\xd8\xaa\xd8\xad\xd8\xa8\xd9\x86\xd9\x8a', 1), ('\xd8\xa7\xd9\x83\xd8\xab\xd8\xb1', 1)]
[('\xd8\xa7\xd9\x83\xd8\xab\xd8\xb1', 1), ('\xd8\xa7\xd8\xad\xd9\x85\xd8\xaf', 1), ('\xd9\x8a\xd8\xad\xd8\xa8', 1), ('\xd8\xa7\xd9\x84\xd8\xb7\xd8\xa7\xd9\x88\xd9\x84\xd8\xa9', 1), ('\xd9\x83\xd8\xb1\xd8\xa9', 2), ('\xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xa9', 1), ('\xd9\x85\xd9\x86', 1)]
为什么我看不到阿拉伯文字。我想看到阿拉伯语单词而不是输出中出现的这些代码。谢谢
Python 打印列表,以便其中的所有项目都通过 repr
传递,后者又生成带有“\u...”的内容。另请查看有关 unicode-strings or better the unicode HOWTO 的教程部分,它们对我帮助很大。
对于包含非 ascii 字符的源代码,您应该 set an encoding(最有可能 "utf-8")。您还可能希望标记包含 unicode 等字符的字符串(u"..."
而不是 "..."
)
# -*- coding: utf-8 -*-
from collections import Counter
mydoclist = [u'جوليا تحبني اكثر من ليندا',u'جين تحبني اكثر من جوليا',u'احمد يحب كرة السلة اكثر من كرة الطاولة']
for doc in mydoclist:
tf = Counter()
for word in doc.split():
tf[word] +=1
print u", ".join( u"(%i: %s)"%(n,s) for (s,n) in tf.items())
适合我。
我有以下 Python 2.7 代码:
mydoclist = ['جوليا تحبني اكثر من ليندا','جين تحبني اكثر من جوليا','احمد يحب كرة السلة اكثر من كرة الطاولة']
from collections import Counter
for doc in mydoclist:
tf = Counter()
for word in doc.split():
tf[word] +=1
print tf.items()
我得到以下输出:
[(u'\u062a\u062d\u0628\u0646\u064a', 1), (u'\u0645\u0646', 1), (u'\u062c \u0648\u0644\u064a\u0627', 1), (u'\u0644\u064a\u0646\u062f\u0627', 1), (u'\u0627\u0643\u062b\u0631', 1)]
[('\xd8\xac\xd9\x8a\xd9\x86', 1), ('\xd9\x85\xd9\x86', 1), ('\xd8\xac\xd9\x88\xd9\x84\xd9\x8a\xd8\xa7', 1), ('\xd8\xaa\xd8\xad\xd8\xa8\xd9\x86\xd9\x8a', 1), ('\xd8\xa7\xd9\x83\xd8\xab\xd8\xb1', 1)]
[('\xd8\xa7\xd9\x83\xd8\xab\xd8\xb1', 1), ('\xd8\xa7\xd8\xad\xd9\x85\xd8\xaf', 1), ('\xd9\x8a\xd8\xad\xd8\xa8', 1), ('\xd8\xa7\xd9\x84\xd8\xb7\xd8\xa7\xd9\x88\xd9\x84\xd8\xa9', 1), ('\xd9\x83\xd8\xb1\xd8\xa9', 2), ('\xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xa9', 1), ('\xd9\x85\xd9\x86', 1)]
为什么我看不到阿拉伯文字。我想看到阿拉伯语单词而不是输出中出现的这些代码。谢谢
Python 打印列表,以便其中的所有项目都通过 repr
传递,后者又生成带有“\u...”的内容。另请查看有关 unicode-strings or better the unicode HOWTO 的教程部分,它们对我帮助很大。
对于包含非 ascii 字符的源代码,您应该 set an encoding(最有可能 "utf-8")。您还可能希望标记包含 unicode 等字符的字符串(u"..."
而不是 "..."
)
# -*- coding: utf-8 -*-
from collections import Counter
mydoclist = [u'جوليا تحبني اكثر من ليندا',u'جين تحبني اكثر من جوليا',u'احمد يحب كرة السلة اكثر من كرة الطاولة']
for doc in mydoclist:
tf = Counter()
for word in doc.split():
tf[word] +=1
print u", ".join( u"(%i: %s)"%(n,s) for (s,n) in tf.items())
适合我。