You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本优化需求:识别并统计文本文件中缩写词出现次数

Python缩写词识别与统计改进方案

需求:实现Python程序,识别指定文本文件中由2个及以上字母组成(支持大小写)的缩写词,并统计每个缩写词的出现次数。

原代码存在的问题

  • 仅统计全大写单词的总数量,未区分不同缩写词,也未支持带点的缩写格式(如U.S.A.),不符合“统计每个缩写词出现次数”的核心需求
  • 遍历文本逻辑错误:for line in text会将文本拆分为单个字符遍历,而非按行处理
  • 冗余使用re.sub替换缩写,未利用正则提取目标内容
  • import re放在文件读取的代码块内,不符合Python编码规范

改进后的代码

import re
from collections import Counter

# 定义匹配缩写的正则表达式:匹配带点的缩写(如U.S.A.)或全大写无点缩写(含复数结尾s,如CDs)
ACRONYM_PATTERN = r'\b(?:[A-Z]\.){2,}|[A-Z]{2,}s?\b'

def count_acronyms(file_path):
    with open(file_path, 'r', errors='ignore') as file:
        text = file.read()
        # 提取所有匹配的缩写词
        acronyms = re.findall(ACRONYM_PATTERN, text)
        # 处理带点的缩写,统一格式(如U.S.A.转为USA),方便统计
        normalized_acronyms = [acronym.replace('.', '') for acronym in acronyms]
        # 统计每个缩写的出现次数
        acronym_counts = Counter(normalized_acronyms)
        return acronym_counts

if __name__ == '__main__':
    counts = count_acronyms('Larex_text_file.txt')
    print("各缩写词出现次数:")
    for acronym, count in counts.items():
        print(f"{acronym}: {count}")

代码说明

  1. 正则表达式设计:
    • \b:匹配单词边界,确保提取的是完整单词而非字符串片段
    • (?:[A-Z]\.){2,}:匹配至少2个字母、每个字母后带点的缩写(如U.N.),(?:...)表示非捕获组
    • [A-Z]{2,}s?:匹配至少2个大写字母的缩写,可选结尾s(处理复数形式如CDs)
  2. 格式归一化:将带点的缩写去除点号(如U.S.A.转为USA),避免同一缩写因格式不同被重复统计
  3. 统计工具:使用collections.Counter高效统计每个缩写的出现次数,直接输出键值对结果

内容的提问来源于stack exchange,提问作者Simanta Sarkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:06:30