python sub 第三次_Python 3.3中的re.sub

你可以试试这个:>>> import re

>>> text = 'file1 file2 file3'

>>> x = re.sub(r'file([1-9])',r'file0\1',text)

'file01 file02 file03'

包装在[1-9]周围的括号捕获匹配,这是第一个匹配。您将看到我在replace中使用它,使用\1表示匹配中的第一个catch。

另外,如果不想为2位或更多的文件添加零,可以在regexp中添加[^\d]:x = re.sub(r'file([1-9](\s|$))',r'file0\1',text)

现在我使用^{}和^{}表达式重新讨论这个答案,这是一个更通用的解决方案:import re

fmt = '{:03d}' # Let's say we want 3 digits with leading zeroes

s = 'file1 file2 file3 text40'

result = re.sub(r"([A-Za-z_]+)([0-9]+)", \

lambda x: x.group(1) + fmt.format(int(x.group(2))), \

s)

print(result)

# 'file001 file002 file003 text040'

有关lambda表达式的一些详细信息:lambda x: x.group(1) + fmt.format(int(x.group(2)))

# ^--------^ ^-^ ^-------------^

# filename format file number ([0-9]+) converted to int

# ([A-Za-z_]+) so format() can work with our format

我使用表达式[A-Za-z_]+,假设文件名除了训练数字之外,还包含字母和下划线。如果需要,请选择更合适的表达式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值