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的参数使用所有的空格