跳到主要内容

10.3 实战项目三:英文词频统计

项目目标

读取一篇英文文章,统计每个单词出现的次数,输出出现频率最高的前 10 个单词。

这是数据处理的入门第一课——"统计"是数据分析的原点。

用到的知识:文件读取、字符串处理、字典计数、排序。

准备测试数据

在代码同目录创建 article.txt,随便放一段英文,比如:

Python is powerful and fast. Python plays well with others.
Python runs everywhere. Python is friendly and easy to learn.
Python is open. That is why we love Python.

思路拆解

  1. 读取文件内容为一个字符串
  2. 统一转成小写(Pythonpython 应算同一个词)
  3. 去掉标点符号
  4. 按空格拆分成单词列表
  5. 用字典计数(第 4.3 节学过的套路)
  6. 按次数排序,取前 10

完整代码

# word_count.py — 英文词频统计

def read_text(filename):
"""读取文件内容"""
with open(filename, "r", encoding="utf-8") as f:
return f.read()


def clean_text(text):
"""转小写并去掉标点"""
text = text.lower()
for ch in ",.!?;:\"'()[]":
text = text.replace(ch, " ")
return text


def count_words(text):
"""统计每个单词出现的次数,返回字典"""
counter = {}
for word in text.split():
counter[word] = counter.get(word, 0) + 1
return counter


def main():
text = read_text("article.txt")
text = clean_text(text)
counter = count_words(text)

# 按出现次数从大到小排序
sorted_words = sorted(counter.items(), key=lambda x: x[1], reverse=True)

print(f"共 {len(counter)} 个不同的单词,出现最多的前 10 个:\n")
print(f"{'单词':<15}次数")
print("-" * 20)
for word, count in sorted_words[:10]:
print(f"{word:<15}{count}")


if __name__ == "__main__":
main()

运行结果类似:

共 22 个不同的单词,出现最多的前 10 个:

单词 次数
--------------------
python 6
is 4
and 2
...

三个新知识点

1. get() 计数法,比 if/else 版更简洁:

counter[word] = counter.get(word, 0) + 1
# 含义:取 word 当前的次数(没有就当 0),加 1 后存回去

2. sorted + lambda 排序

sorted(counter.items(), key=lambda x: x[1], reverse=True)
  • counter.items() 把字典变成 [("python", 6), ("is", 4), ...] 这样的键值对序列
  • key=lambda x: x[1] 意思是"按每一项的第 1 号元素(即次数)排序"。lambda 是一种一行的迷你函数,lambda x: x[1] 等价于:
def get_count(x):
return x[1]
  • reverse=True 从大到小

3. 格式化对齐f"{word:<15}" 表示左对齐、占 15 个字符宽度,用于排出整齐的表格。

挑战任务

  1. 排除无意义的常见词(the、is、a、and 等):建一个"停用词"集合,统计时跳过。
  2. 把统计结果写入 result.txt 而不是打印。
  3. 让用户输入文件名来指定要分析哪个文件,文件不存在时友好提示。
  4. (进阶)中文文章能直接用这套方法吗?为什么?(提示:中文词与词之间没有空格。业界用 jieba 分词库解决,感兴趣可以 pip install jieba 试试。)

毕业寄语

三个项目做完,你已经具备了独立编写小程序的能力!🎓

接下来的建议:

  1. 多写:想到什么小工具就动手做(自动整理文件夹、生日提醒、密码生成器……)
  2. 选方向:办公自动化、爬虫、数据分析、Web 开发,选一个感兴趣的方向深入
  3. 学会查资料:官方文档、搜索引擎和 AI 助手都是你的好朋友

遇到问题回来翻这本教程,附录还有常见报错速查学习资源推荐。祝编程愉快!