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

如何使用正则表达式快速提取.csv后缀的目标文件名?

高效提取.csv文件名的正则实现方案

直接使用正则单次扫描即可完成提取,无需多层split拆分与嵌套循环判断,性能远高于逐段拆分遍历的实现,同时兼容单行1个/多个目标文件的场景。

核心正则规则

[^/|]+\.csv

规则逻辑:

  • [^/|]+:匹配所有既不属于路径分隔符/、也不属于字段分隔符|的连续字符,自动过滤掉文件名前缀的路径、无关字段内容
  • \.csv:精确匹配.csv后缀,避免误匹配带csv字样的非目标内容

代码调用示例

单字符串测试

针对给出的示例字符串,调用效果如下:

import re

test_line = "4918,  fx,fx,weapon/muzzleflashes/fx_m1carbine,3.3,3.3,|sp/zombie_m1carbine|weapon|../zone_source/dlc3.csv|csv|../zone_source/spongebob.csv|csv"
res = re.findall(r"[^/|]+\.csv", test_line)
print(res)
# 输出结果:['dlc3.csv', 'spongebob.csv']

批量扫描性能优化写法

针对逐行扫描大文件的场景,提前预编译正则对象可以进一步降低开销,避免每行重复编译正则的性能损耗:

import re

# 程序初始化阶段仅编译1次正则,全局复用
csv_name_pattern = re.compile(r"[^/|]+\.csv")

# 逐行读取文件时直接调用
with open("your_target_file.csv", "r", encoding="utf-8") as f:
    for line in f:
        # 一次性拿到当前行所有符合要求的csv文件名,结果为列表
        target_csv_names = csv_name_pattern.findall(line)
        # 后续直接处理提取到的文件名即可

兼容说明

  • 自动过滤路径:无论文件名前缀是../相对路径、多级目录路径还是其他分隔字段,都只会提取最终的纯文件名+.csv后缀
  • 数量自适应:单行存在1个、2个甚至更多目标csv文件时,都可以一次性提取完成,无需额外写分支判断
  • 低误匹配率:不会将单独的|csv字段、路径中带csv字样的目录名识别为目标文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:54:18