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

Python:如何基于重复分隔符的最后一次出现拆分文件名?

如何基于重复分隔符的最后一次出现拆分文件名?

问题场景

你需要拆分文件名,规则是:遇到连续下划线时,仅将最后一个下划线作为分隔符,前面的连续下划线保留在对应字段中。具体示例如下:

输入文件名

abc_123
abc_123_d4
abc__123  (2 underscores)
abc_123__d4  (2 underscores)
abc____123  (4 underscores)

预期输出

abc, 123
abc, 123, d4
abc_, 123 (1 underscore)
abc, 123_, d4 (1 underscore)
abc___, 123 (3 underscores)

直接使用filename.split("_")会将所有下划线视为分隔符,导致连续下划线被完全拆分,丢失前面的下划线部分,得到不符合预期的结果:

abc, 123
abc, 123, d4
abc, 123
abc, 123, d4
abc, 123

解决方案

使用正则表达式的正向否定预查,匹配那些后面不跟随下划线的下划线(即连续下划线的最后一个,或单个下划线),以此作为分隔符拆分。

代码实现

import re

def split_filename(filename):
    return re.split(r'_(?![_])', filename)

# 测试用例
test_files = [
    'abc_123',
    'abc_123_d4',
    'abc__123',
    'abc_123__d4',
    'abc____123'
]

for file in test_files:
    print(', '.join(split_filename(file)))

运行结果

abc, 123
abc, 123, d4
abc_, 123
abc, 123_, d4
abc___, 123

正则说明

r'_(?![_])'的含义是:匹配一个下划线,且该下划线的后面不是下划线。这样就能精准定位到需要作为分隔符的下划线,同时保留连续下划线中前面的部分在对应字段内。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:26:17