Python - 从一串文本中计算重复的单词,并输出每个单词的出现次数

时间:2014-05-20 17:07:49

标签: python excel count frequency

我有一个包含大量重复单词的words.txt文件。

我想对列表进行排序并计算每个单词出现的频率。

理论上我可以通过在Excel中对COUNTIF进行排序和使用来实现这一点,但是我有一个大于< 10K行的文件,所以使用Excel是不实际的。

到目前为止,我通过输入python count.py words.txt运行的count.py文件中完成了什么:

import re
from sys import argv
from collections import Counter, defaultdict

script, filename = argv

cnt = Counter()

txt = open(filename).read()

freqword = defaultdict(list)
for word, freq in Counter(txt).items():
    freqword[freq].append(word)

for freq in sorted(freqword):
 print('count {}: {}'.format(freq, sorted(freqword[freq])))

但是,当我想要教授单词时,这会让每个角色都重新计算。我做错了什么?

更新:谢谢我指出我需要通过执行txt.split()将txt拆分为单词。

这是我更新的代码:

from sys import argv
from collections import Counter, defaultdict

script, filename = argv

txt = open(filename).read()
cnt = Counter(txt.split())
freqword = defaultdict(list)

for word, freq in cnt.items():
    freqword[freq].append(word)

for freq in sorted(freqword):
    print('count {}: {}'.format(freq, sorted(freqword[freq])))

1 个答案:

答案 0 :(得分:4)

这一行:

txt = open(filename).read()

txt是一个字符串。所以

Counter(txt)

计算字符串的每个字符。

为了计算字符串的每个单词,您需要在Counter之前将其拆分为单词:

Counter(txt.split())

没有传递给split的参数使用所有空格