跳到主要内容

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. 统一转成小写(Python 和 python 应算同一个词)
  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 助手都是你的好朋友

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