如何使用REGEX读取txt文件统计单词出现次数并存储到字典中
Python实现正则提取单词并统计频次方案
核心逻辑
- 核心正则规则用
[a-zA-Z]+匹配所有连续纯字母序列,自动过滤数字、特殊符号 - 提取到的所有单词统一转小写,实现不区分大小写统计
- 统计每个单词的出现次数,转成字典格式输出
完整代码示例
简洁版(用内置计数工具实现)
import re from collections import Counter # 替换为你的txt文件实际路径 file_path = "test.txt" with open(file_path, 'r', encoding='utf-8') as f: content = f.read() # 提取所有连续字母序列,统一转小写 words = [word.lower() for word in re.findall(r'[a-zA-Z]+', content)] # 统计频次转字典 result = dict(Counter(words)) print(result)
新手易懂版(手动实现字典统计,无额外依赖)
import re file_path = "test.txt" with open(file_path, 'r', encoding='utf-8') as f: content = f.read() raw_words = re.findall(r'[a-zA-Z]+', content) result = {} for word in raw_words: lower_word = word.lower() if lower_word in result: result[lower_word] += 1 else: result[lower_word] = 1 print(result)
规则说明
- 正则表达式
[a-zA-Z]+中,[a-zA-Z]表示匹配大小写英文字母,+表示匹配连续1个及以上的前面规则的字符,因此会自动忽略前后的数字、特殊符号,只提取纯字母组成的单词 - 所有提取到的单词统一调用
lower()方法转小写,即可实现不区分大小写的统计需求 - 用你提供的示例文本测试,输出结果和你给出的预期完全一致:
{'hello': 1, 'my': 2, 'name': 2, 'is': 2, 'jeff': 1, 'letters': 1, 'long': 1}
内容的提问来源于stack exchange,提问作者Nich
相关产品推荐
相关产品推荐

