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

Python批量文本正则匹配提取分存新文件结果累加问题求助

代码修改方案

根因:存储匹配结果的列表extracts_eds_upe定义在文件遍历循环的外部,处理完每个文件后没有清空列表,导致后续文件的匹配结果会累加之前所有文件的匹配内容。代码中extract_on变量无实际作用可以删除,且原输出逻辑增加的undo 前缀和预期输出不符,也需要调整。

修改后的完整代码如下:

import re
import glob
import os

list_of_files = glob.glob('10.123.130*.txt')
pattern = re.compile(r"^\S+ \S+ \S+ 205\d+.*$")
output_dir = r'D:\Python Project\DRP\UPE'
# 自动创建输出目录,避免路径不存在报错
os.makedirs(output_dir, exist_ok=True)

for fileName in list_of_files:
    # 每个文件处理前初始化空列表,避免跨文件结果累加
    extracts_eds_upe = []
    with open(fileName, 'r', encoding='utf-8') as myfile:
        for line in myfile:
            if pattern.search(line):
                extracts_eds_upe.append(line.rstrip('\n'))
    
    output_path = os.path.join(output_dir, os.path.basename(fileName))
    with open(output_path, 'w', encoding='utf-8') as mytext:
        for line in extracts_eds_upe:
            # 若实际需要保留undo前缀,可取消下一行注释,并删除当前的write(line)行
            # mytext.write("undo ")
            mytext.write(line)
            mytext.write('\n')

核心修改点:

  • 将匹配结果列表extracts_eds_upe的初始化移动到文件遍历循环内部,每个文件处理前自动重置为空,彻底解决结果累加问题
  • 新增输出目录自动创建逻辑,避免手动创建目录遗漏导致的报错
  • 补充文件读写的编码指定,避免跨系统环境编码不一致导致的乱码问题
  • 移除无用的extract_on变量
  • 默认去掉了输出的undo 前缀,和给出的预期输出一致,可根据实际需求按注释调整

内容的提问来源于stack exchange,提问作者saratoon J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 04:54:02