2

我有一个包含 utf-8 格式的非英文文本的列表。因此,当我尝试打印一个单词时,它给了我这个:u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628'

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

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

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

words = [w for w in txt.split()]

将打印出来

[u'\ufeff\u0643\u0627\u0646', u'\u064a\u0627', u'\u0645\u0627', ...u'\u0643\u0627\u0646', u'\u0641\u064a',你'\u0642\u062f\u064a\u0645']

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

 >>> for w in words:
        print w,

将打印出来

كان يا ما كان

我使用 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)]

我想访问每个单词并循环它以使用它的频率打印出来。

4

1 回答 1

1

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

>>> print u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628'
والأرنب

如果您通过解释器执行此操作并且您没有明确使用print,您仍然会看到 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
于 2012-11-07T07:14:09.860 回答