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

在Pandas中按需解析文件路径:保留首尾指定层级目录与完整文件名

在Pandas中按需解析文件路径:保留首尾指定层级目录与完整文件名

看来你想要的是一种更灵活的路径格式化方式——既能保留开头的关键层级目录,又能展示末尾的目录结构和完整文件名,中间用省略号过渡对吧?我给你两个实用的方案,你可以根据需求选择:

方案一:自定义函数处理(推荐,灵活易调整)

这种方式通过拆分路径、筛选需要保留的部分再重组,逻辑清晰,还能轻松调整要保留的首尾层级数量:

def format_file_path(path, keep_first=4, keep_last=3):
    # 拆分路径为各个层级,同时过滤掉空字符串(因为路径开头的/会生成空元素)
    path_parts = [part for part in path.strip().split('/') if part]
    
    # 如果路径总长度小于等于要保留的首尾层级总和,直接返回原路径(无需省略)
    if len(path_parts) <= keep_first + keep_last + 1:  # +1是因为要包含文件名
        return path
    
    # 提取前N个层级、最后M个层级+文件名
    first_section = '/'.join(path_parts[:keep_first])
    last_section = '/'.join(path_parts[-(keep_last + 1):])  # +1是包含文件名
    
    # 拼接成目标格式
    return f"/{first_section}/..../{last_section}"

# 应用到你的DataFrame
df["formatted_file"] = df["file"].apply(format_file_path, keep_first=4, keep_last=3)

示例效果

输入的原数据:

file
/a/b/c/d/e/f/g/h/i/j/k/l/m/n/a.c
/a/b/c/d/e/x/b.c

处理后输出:

formatted_file
/a/b/c/d/..../l/m/n/a.c
/a/b/c/d/e/x/b.c

你可以随时调整keep_first(要保留的开头层级数)和keep_last(要保留的末尾目录数)的参数,比如想保留前5个开头层级,只需要把keep_first改成5即可。

方案二:正则表达式替换

如果偏好用正则处理,也可以写一个匹配规则,不过灵活性不如自定义函数:

# 这里对应保留前4个开头层级、最后3个末尾目录+文件名的规则
df["formatted_file"] = df["file"].str.replace(
    r'^(/(?:[\w\.-]+/){4})(?:.*?)/((?:[\w\.-]+/){3}[\w\.-]+)$',
    r'\1..../\2',
    regex=True
)

这个正则会匹配符合长度要求的路径,将中间部分替换为省略号;如果路径长度不够,会直接保留原路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 14:35:27