【python】计算单词出现次数

读取文件内容:从一个文本文件中读 取所有行,并将每一行作为一个元素存储到一个列表中。

去除空行:从列表中移除所有的空行,并确保没有多余的空白行。

统计单词频率:计算文件中每个单词出现的次数,忽略大小写,并输出出现次数最多的前5个单词及其频率。

代码:

import re
from collections import Counter

# 第一步:读取文件内容
file_path = 'filename.txt'  # 请将'your_file.txt'替换为您的文件名
try:
    with open(file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()
except FileNotFoundError:
    print(f"文件 {file_path} 未找到。")
    exit()

# 第二步:去除空行和多余的空白行
# 使用列表推导式和strip方法去除行尾的空白符(包括换行符),并检查是否为空字符串
cleaned_lines = [line.strip() for line in lines if line.strip()]

# 第三步:统计单词频率
# 使用正则表达式分割单词,并忽略大小写
words = re.findall(r'\b\w+\b', ' '.join(cleaned_lines).lower())
word_counts = Counter(words)

# 输出出现次数最多的前5个单词及其频率
most_common_words = word_counts.most_common(5)
for word, count in most_common_words:
    print(f"{word}: {count}")

小猪:

  1. 文件路径‌:请确保将'filename.txt'替换为您实际要读取的文件的路径和文件名。
  2. 错误处理‌:我使用了try-except块来处理文件未找到的情况。
  3. 单词分割‌:我使用了re.findall方法和正则表达式\b\w+\b来分割单词。这个正则表达式会匹配任何由字母、数字或下划线组成的单词,并且单词前后都有单词边界\b,这样可以确保我们不会将较长的单词分割成多个部分。
  4. 大小写忽略‌:在将所有行连接成一个字符串后,我使用了.lower()方法来确保在统计单词频率时忽略大小写。
  5. 输出‌:我使用了Counter类的most_common方法来获取出现次数最多的前5个单词及其频率,并打印出来。

正则表达式\b\w+\b

  • \b是一个单词边界的断言。它匹配的不是一个字符,而是一个位置,这个位置要求紧挨着的字符不能都是单词字符。换句话说,它用于确定单词的开始和结束。
  • \w匹配任何单词字符,包括字母、数字和下划线(_)。
  • +是一个量词,表示前面的模式(在这个例子中是\w)出现一次或多次。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值