我无法弄清楚如何使用替换命令来完成这项工作,这是我被指示要做的。我将此文本用作变量:
text = 'file1, file2, file10, file20'
我想搜索文本并在任何小于 10 的数字前替换为零。我想我可以做 if 语句,这取决于 re.match 或 findall 是否只会在文本后找到一位数字,但我似乎无法执行。这是我的起始代码,我在其中尝试将字符串和数字提取到组中,并且只提取那些只有一位数字的文件名:
import re
text = 'file1, file2, file10, file20'
mtch = re.findall('^([a-z]+)(\d{1})$',text)
但是没用
最佳答案
您可以将 re.sub
与 str.zfill
一起使用:
>>> text = 'file1, file2, file10, file20'
>>> re.sub(r'(\d+)', lambda m : m.group(1).zfill(2), text)
'file01, file02, file10, file20'
#or
>>> re.sub(r'([a-z]+)(\d+)', lambda m : m.group(1)+m.group(2).zfill(2), text)
'file01, file02, file10, file20'
关于python - 使用正则表达式替换命令在文件名字符串中小于 10 的数字前面插入前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18191633/