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

如何在日志文件中用正则提取仅带后缀的CSV文件名,排除完整路径

正则提取CSV文件名解决方案

原有代码问题分析

  • 搭配re.S参数后,正则中的.可以匹配换行符,非贪婪匹配.*?没有明确的终止边界,导致匹配溢出到后续行
  • 没有过滤路径前缀,也没有严格限定.csv扩展名规则
  • 未正确匹配日志行末尾的句号作为匹配终止标识

修复方案

方案1:正则一步提取(推荐)

直接通过正则捕获纯文件名,无需额外处理:

for result in re.findall(r'Importing file .*/([^/]+\.csv)\.', fp.read()):
    print(result)

正则规则说明:

  • .*/:匹配文件路径中最后一个斜杠及之前的所有路径内容
  • ([^/]+\.csv):捕获组,匹配所有不包含斜杠的字符+.csv后缀,也就是纯CSV文件名
  • \.:匹配日志行中CSV文件名末尾的句号,作为匹配终止边界,避免溢出

注:如果需要兼容Windows反斜杠路径,可以将正则调整为r'Importing file .*[\\/]([^\\/]+\.csv)\.'

方案2:先提取全路径再解析(兼容性更强)

如果路径格式不固定,可以先提取完整路径,再用系统自带的路径工具解析文件名:

import os
import re

for full_path in re.findall(r'Importing file (.*?\.csv)\.', fp.read()):
    csv_filename = os.path.basename(full_path)
    print(csv_filename)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:06:03