Python文本文件单词统计优化:排序与去除标点问题
解决Python文本单词统计的两个问题
修改后的完整代码
import re from collections import Counter with open("data/aragon.txt", 'r', encoding='utf-8') as file: # 读取文本并转为小写,用正则提取纯单词 text = file.read().lower() words = re.findall(r'\b\w+\b', text) # 统计单词次数并按从高到低排序 wordcount = Counter(words) # 遍历输出排序后的结果 for word, count in wordcount.most_common(): print(f"{word}\t{count}")
关键修改说明
过滤标点并统一单词格式:
text.lower()将所有文本转为小写,避免Ebro和ebro被统计为两个不同单词;- 正则表达式
\b\w+\b精准匹配由字母、数字组成的完整单词,自动剔除带标点的内容(比如Ebro,、Spain.会被处理成ebro、spain)。
按出现次数排序:
- 直接调用Counter的
most_common()方法,默认返回按出现次数从高到低排序的元组列表,遍历即可输出有序结果。
- 直接调用Counter的
文件操作优化:
- 使用
with语句管理文件,无需手动关闭文件,自动释放资源,避免遗漏关闭导致的问题。
- 使用
内容的提问来源于stack exchange,提问作者user19965401
相关产品推荐
相关产品推荐

