【问题标题】:Python - Count duplicate words from a string of text and output each word with its number of occurencesPython - 从文本字符串中计算重复单词并输出每个单词及其出现次数
【发布时间】: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


    【解决方案1】:

    用这一行:

    txt = open(filename).read()
    

    txt 是一个字符串。所以

    Counter(txt)
    

    计算字符串的每个字符。

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

    Counter(txt.split())
    

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

    【讨论】:

    • 啊,快点抢我吧。
    • 谢谢!我将编辑我的帖子以反映解决方案。
    • 为什么,@LNA?问题就是问题,答案就是答案
    • 我在原始帖子中遇到了一些小问题——例如我没有使用 cnt 变量,并且 import re 是无关紧要的。只是再次发布,因为我想修复它。
    • @LNA:如果您的原始帖子存在不相关的问题,可以简化它,保留问题的核心。但是修改您的 question 使其包含 answer 是没有意义的。
    猜你喜欢
    • 2018-08-25
    • 2019-07-31
    • 1970-01-01
    • 2016-06-28
    • 2011-11-26
    • 1970-01-01
    • 2023-04-04
    • 2015-09-14
    相关资源
    最近更新 更多