You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现逐行统计TXT文件中词组出现频率的正确方法

解决按短语统计文本行频率的问题

嘿,我一眼就瞅出问题所在啦!你现在的代码是把整个文本按单个单词拆分统计,但你实际想要统计的是每一行完整的短语(比如"Good Day"是一个整体),这就是输出和预期不符的核心原因。

问题根源

你用了text.split(None),这个方法会把所有空白字符(包括空格、换行)都当成分隔符,把整个文本拆成一个个独立的单词——自然就把"Good Day"拆成了"Good"和"Day"两个单独项来统计,结果肯定不对啦。

修改后的代码

我给你调整了代码,改成按行读取并统计每个完整短语的频率,同时用更规范的文件操作方式(with语句会自动帮你关闭文件,避免资源泄漏):

# 用with语句打开文件,自动处理关闭操作
with open("test.txt", "r") as file:
    phrase_freq = {}
    # 逐行读取文件,line就是每一行的内容
    for line in file:
        # 去掉行尾的换行符和前后多余空格
        phrase = line.strip()
        # 跳过空行(如果文件里有的话)
        if not phrase:
            continue
        # 统计短语频率
        phrase_freq[phrase] = phrase_freq.get(phrase, 0) + 1

# 遍历统计结果输出(顺序不限的话直接遍历字典即可)
for phrase, count in phrase_freq.items():
    print(f"{phrase}: {count}")

为什么这样改?

  1. 按行读取:for line in file会逐行读取文本内容,每一行就是你要统计的完整短语(比如"Hello"、"Good Day"),完美保留了短语的完整性。
  2. strip()处理:去掉每行末尾的换行符\n以及前后可能存在的多余空格,保证短语的准确性。
  3. 统计逻辑不变:还是用字典记录每个短语的出现次数,只是现在的统计对象是完整短语,而非单个单词。

测试效果

假设你的test.txt内容是每行一个短语:

Hello
Hi
Hello
Good Day
Hi
Good Day
Good Night
Good Night

运行代码后会输出符合你预期的结果:

Hello: 2
Hi: 2
Good Day: 2
Good Night: 2

内容的提问来源于stack exchange,提问作者Alexandro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:27:34