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

如何从文件路径中提取ep+三位数字格式的剧集编号并拼接新路径

提取路径中的episode编号并拼接新路径的Python实现

我来帮你搞定这个需求,刚好这种固定格式的编号提取用Python很容易实现,下面给你两种可靠的方案:

方案一:正则表达式(推荐,精准高效)

因为你的目标是匹配ep开头+3位数字(001-999)的文件夹名,正则表达式是最直接的方案,能精准匹配这种固定模式的字符串。

import re

def extract_episode_and_build_path(file_path):
    # 定义正则模式:匹配ep开头,后跟恰好3位数字
    episode_pattern = r'ep\d{3}'
    # 在路径中查找所有匹配的字符串
    matched_episodes = re.findall(episode_pattern, file_path)
    
    if matched_episodes:
        episode_number = matched_episodes[0]
        # 额外验证数字部分是否在001-999范围内(排除ep000这类无效值)
        num = int(episode_number[2:])
        if 1 <= num <= 999:
            # 用f-string拼接新路径,语法更简洁直观
            new_path = f"Y://work/{episode_number}/comp/"
            return episode_number, new_path
    # 如果没有找到符合要求的编号,返回None
    return None, None

# 测试示例路径
sample_path = "N://out/ep001/FX/maya/file4984.ma"
ep_num, result_path = extract_episode_and_build_path(sample_path)

if ep_num:
    print(f"提取到的episode编号: {ep_num}")
    print(f"拼接后的新路径: {result_path}")
else:
    print("未找到符合格式的episode编号")

代码说明:

  • r'ep\d{3}':正则表达式的核心,ep是固定前缀,\d{3}表示恰好匹配3位数字
  • re.findall会找出路径中所有符合模式的字符串,我们取第一个结果(因为路径里应该只有一个目标文件夹)
  • 增加数字范围验证,确保提取的编号是001到999之间的有效编号
  • 使用f-string拼接路径,比传统的加号拼接更易读且不易出错

方案二:拆分路径逐个检查(无需正则)

如果你对正则表达式不太熟悉,也可以通过拆分路径的每个组件,逐个检查是否符合格式:

import os

def extract_episode_and_build_path(file_path):
    # 拆分路径的所有组成部分(兼容不同系统的路径分隔符)
    path_components = file_path.split(os.sep)
    
    for component in path_components:
        # 检查:长度为5(ep+3位数字)、以ep开头、后三位是数字
        if len(component) == 5 and component.startswith('ep') and component[2:].isdigit():
            num = int(component[2:])
            if 1 <= num <= 999:
                new_path = f"Y://work/{component}/comp/"
                return component, new_path
    return None, None

# 测试示例路径
sample_path = "N://out/ep001/FX/maya/file4984.ma"
ep_num, result_path = extract_episode_and_build_path(sample_path)

if ep_num:
    print(f"提取到的episode编号: {ep_num}")
    print(f"拼接后的新路径: {result_path}")
else:
    print("未找到符合格式的episode编号")

代码说明:

  • os.sep会自动适配当前系统的路径分隔符(比如Windows的\或Linux的/),让代码更通用
  • 遍历路径的每个部分,通过长度、前缀、数字验证三个条件筛选出目标编号
  • 同样加入了001-999的范围验证,保证编号有效性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:04:01