【发布时间】:2014-05-20 17:07:48
【问题描述】:
我有一个包含大量重复单词的 words.txt 文件。
我想对列表进行排序并计算每个单词出现的频率。
理论上我可以通过在 Excel 中排序和使用 COUNTIF 来做到这一点,但是我有一个超过 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])))
【问题讨论】:
标签: python excel count frequency