在UTF-8上应用collections.counter()

在UTF-8上应用collections.counter(),collections,utf-8,python-2.7,frequency,Collections,Utf 8,Python 2.7,Frequency,我有一个由utf-8格式的非英语文本组成的列表。 因此,当我试图打印一个单词时,它会给出以下信息: u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628' 因此,为了将其打印为原始单词,我必须循环它,它将正确输出为原始单词 我想找出5个最常用的单词。 将单词存储到collections.counter()函数中时,它们以unicode格式输入。 如何访问计数器()中的单词以打印前5个最常见的单词 我已经完成了以下代码:(txt是我的文本文件) words=[w

我有一个由utf-8格式的非英语文本组成的列表。 因此,当我试图打印一个单词时,它会给出以下信息: u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628'

因此,为了将其打印为原始单词,我必须循环它,它将正确输出为原始单词

我想找出5个最常用的单词。 将单词存储到collections.counter()函数中时,它们以unicode格式输入。 如何访问计数器()中的单词以打印前5个最常见的单词

我已经完成了以下代码:(txt是我的文本文件)

words=[w代表txt.split()中的w]

将打印出来

 >>> [(u'\u0627\u0644\u0633\u0644\u062d\u0641\u0627\u0629', 5),
  (u'\u0627\u0644\u0645\u063a\u0631\u0648\u0631', 3), 
(u'\u0627\u0644\u0623\u0631\u0646\u0628', 2), (u'\u060c', 2), 
(u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628', 2)]
[u'\ufeff\u0643\u0627\u0646',u'\u064a\u0627',u'\u0645\u0627', …u'\u0643\u0627\u0646',u'\u0641\u064a',u'\u0642\u062f\u064a\u0645']

因此,我循环它以获得所需的输出(我不知道为什么)

将打印出来

 >>> [(u'\u0627\u0644\u0633\u0644\u062d\u0641\u0627\u0629', 5),
  (u'\u0627\u0644\u0645\u063a\u0631\u0648\u0631', 3), 
(u'\u0627\u0644\u0623\u0631\u0646\u0628', 2), (u'\u060c', 2), 
(u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628', 2)]
كايا㶋㶋ن

我使用counter()函数查找最频繁的单词

 >>> count = collections.Counter(words)
 >>> print count.most_common(5)
将打印出来

 >>> [(u'\u0627\u0644\u0633\u0644\u062d\u0641\u0627\u0629', 5),
  (u'\u0627\u0644\u0645\u063a\u0631\u0648\u0631', 3), 
(u'\u0627\u0644\u0623\u0631\u0646\u0628', 2), (u'\u060c', 2), 
(u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628', 2)]

我想访问每个单词并循环打印出它们的频率。

在第一个示例中,您可以直接打印单词以获得原件(我不懂阿拉伯语,所以这可能是错误的):

如果您是通过解释器执行此操作的,并且没有明确使用
打印
,您仍然会看到unicode表示:

>>> u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628'
u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628'
因此,您只需调用
print
即可查看实际单词:

>>> l
[(u'\u0627\u0644\u0633\u0644\u062d\u0641\u0627\u0629', 5),
 (u'\u0627\u0644\u0645\u063a\u0631\u0648\u0631', 3), 
 (u'\u0627\u0644\u0623\u0631\u0646\u0628', 2), (u'\u060c', 2), 
 (u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628', 2)]
>>> for el in l:
    print el[0], el[1]


السلحفاة 5
المغرور 3
الأرنب 2
، 2
والأرنب 2

@用户1799092没问题,很高兴它有帮助:)