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

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

我想sorting列表并计算每个单词出现的频率。

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

我到目前为止所做的count.py文件,我通过键入python count.py words.txt运行:

 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]))) 

但是,当我要教字时,这是对每个人物的回报。 我究竟做错了什么?

更新:感谢mhlester,指出我需要通过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]))) 

用这一行:

 txt = open(filename).read() 

txt是一个string。 所以

 Counter(txt) 

统计string的每个字符。

为了统计string的每个单词 ,需要在Counter之前将其分成单词:

 Counter(txt.split()) 

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