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

如何用Python汇总大语料中re.findall的匹配总数?

实现大语料总匹配数的方法

要实现所有文件匹配数的求和,只需在循环外初始化一个总计数器,每次循环将单个文件的匹配数累加到总计数器中即可,同时需要先修正原代码里的语法错误:

修改后的完整代码

import os
import re

working_dir = "你的目标目录路径"  # 替换为实际目录路径
total_count = 0  # 初始化总计数器

for file in os.listdir(working_dir):
    file_path = os.path.join(working_dir, file)
    # 跳过目录,只处理文件
    if not os.path.isfile(file_path):
        continue
    with open(file_path, 'r', encoding='utf8') as f:
        # 修正正则表达式的逻辑(原正则中的^是字符串开头锚点,放在分组内无意义,这里调整为匹配指定标签)
        IVP_pattern = r'\(VP[a-zA-Z0-9_\s.+-]+\((NP|VP|S|SBAR|PP)'
        # 修正字符串处理的括号缺失问题
        text1 = ' '.join(f.read().replace(')', '').replace('\n', '').split())
        # 修正findall的括号缺失问题
        count_IVP = len(re.findall(IVP_pattern, text1))
        total_count += count_IVP  # 累加单个文件的匹配数
        # 可选:保留单个文件的匹配数打印
        print(f"文件{file}匹配数:{count_IVP}")

print(f"大语料总匹配数:{total_count}")

关键修改点

  • 新增total_count = 0作为总计数器,放在循环外部,确保每次循环都能持续累加。
  • 每次计算完单个文件的count_IVP后,执行total_count += count_IVP完成累加操作。
  • 修正了原代码中的语法错误:
    • text1行末尾缺少闭合括号
    • count_IVP行末尾缺少闭合括号
  • 调整了正则表达式中的无效锚点^,避免逻辑错误
  • 新增跳过非文件的判断,防止遍历到目录时触发读取错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:46:01