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

如何使用re.sub替换文件扩展名前连字符后的数字?

解决路径中指定数字的替换问题

方法一:使用re.sub精准替换

你的代码问题在于正则[0-9]会匹配字符串里所有数字,导致路径中的4也被替换。要只替换连字符-之后、.jpg之前的数字,需要用更精准的正则规则:

import re
employee_name = 'datasets/4/image-3.jpg'
# 匹配 "-数字.jpg" 结构,仅替换其中的数字
label = re.sub(r'(\-)\d(\.jpg)', r'\g<1>1\g<2>', employee_name)
print(label)

更灵活的写法(适配文件名中最后一个连字符后的数字):

label = re.sub(r'(\-)\d(?=\.jpg)', r'\g<1>1', employee_name)

规则解释:

  • (\-):捕获连字符,后续用\g<1>引用该分组内容
  • \d:匹配单个数字
  • (?=\.jpg):正向预查,确保数字后紧跟.jpg,但不将.jpg纳入匹配范围

运行后输出:datasets/4/image-1.jpg

方法二:字符串分割拼接实现

如果对正则不熟悉,也可以用分割拼接的方式,逻辑更直观:

employee_name = 'datasets/4/image-3.jpg'
# 拆分路径与文件名
path_part, filename = employee_name.rsplit('/', 1)
# 拆分文件名的前缀与带数字的后缀
name_prefix, _ = filename.rsplit('-', 1)
# 拼接新文件名与路径
new_filename = f"{name_prefix}-1.jpg"
label = f"{path_part}/{new_filename}"
print(label)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:05:24