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

如何修改Python Counter代码以统计文本文件中的单词频率而非字母频率?

解决Python单词计数器统计字母而非单词的问题

问题出在你当前的pitchforkr变量应该是单个字符的序列(比如直接读取了文本却没分割成单词),所以Counter会逐个计数每个字母,这才会出现'e'、't'、'a'这些高频字母的结果。要统计单词频率,核心是先把完整文本分割成独立的单词,还要做一些标准化处理避免重复统计。

这里给你修改后的完整代码,附上详细解释:

from collections import Counter
import string

# 假设pitchforkr是你的原始文本字符串
# 1. 统一转小写:避免"Hello"和"hello"被当成不同单词
lowercase_text = pitchforkr.lower()

# 2. 移除所有标点:避免"word."和"word"被算作两个不同单词
punctuation_remover = str.maketrans('', '', string.punctuation)
clean_text = lowercase_text.translate(punctuation_remover)

# 3. 分割成单词列表:按空白符分割,自动处理多空格/换行
word_list = clean_text.split()

# 4. 统计单词频率并取前4个高频词
word_counts = Counter(word_list)
top_four = word_counts.most_common(4)
print(top_four)

关键步骤说明:

  • 转小写:英文单词的大小写不影响语义,统一转小写能保证同一个单词的不同形式被合并统计
  • 移除标点:文本中的标点符号会附着在单词上(比如"end,"或"start!"),必须移除才能准确统计单词本身
  • 分割单词:split()默认会按任意空白符(空格、换行、制表符等)分割文本,得到真正独立的单词列表,这时Counter才会正确计数每个单词的出现次数

如果你的pitchforkr不是直接的字符串(比如是文件对象),那需要先读取文本内容:

# 假设你是从文件读取文本
with open('your_text_file.txt', 'r', encoding='utf-8') as f:
    pitchforkr = f.read()
# 然后再执行上面的处理步骤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:47:37