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

Python中基于子串提取文件名作为变量的实现方案

Python中基于子串提取文件名作为变量的实现方案

嗨,我来帮你搞定这个需求!咱们一步步来,既简单又能精准实现你要的效果。

首先,你已经通过os.listdir()拿到了目录里的文件列表,接下来就按你的两个要求来处理:

第一步:筛选符合条件的文件名

我们需要找出所有以wf开头、以_param.py结尾的文件,用列表推导式就能轻松实现:

import os

# 你已有的代码
dir_contents = os.listdir('.')

# 筛选目标文件
target_files = [f for f in dir_contents if f.startswith('wf') and f.endswith('_param.py')]

第二步:提取目标部分作为变量

拿到符合条件的文件列表后,我们可以提取_param.py之前的内容。这里有两种常用方法,你可以根据自己的习惯选:

方法一:用字符串分割(简单直接)

用rsplit()从右边只分割一次,这样即使文件名里意外出现多个_param.py(当然你的场景里应该不会),也只会取最后一段之前的内容,完全符合需求:

if target_files:
    # 取第一个符合条件的文件(如果确定只有一个的话)
    target_file = target_files[0]
    # 提取核心部分
    result_var = target_file.rsplit('_param.py', 1)[0]
    print(result_var)  # 输出: wf_list_dir
else:
    print("没找到符合条件的文件哦!")

方法二:用正则表达式(灵活通用)

如果之后文件名规则可能变化,正则表达式会更灵活。我们可以写一个精准匹配的正则,直接提取我们要的部分:

import re

pattern = r'^(wf.*?)_param\.py$'
result_var = None
for f in dir_contents:
    match = re.match(pattern, f)
    if match:
        result_var = match.group(1)
        print(result_var)  # 输出: wf_list_dir
        break  # 找到第一个就停止,不用继续循环

if not result_var:
    print("没找到符合条件的文件哦!")

这个正则的意思是:匹配以wf开头,以_param.py结尾的字符串,中间的部分就是我们要提取的内容,用group(1)就能拿到。

小提醒

  • 如果目录里可能有多个符合条件的文件,你可以循环遍历target_files列表,逐个处理每个文件
  • 建议加上空列表判断,避免找不到文件时出现索引错误

备注:内容来源于stack exchange,提问作者nmr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:14:34