python - 使用正则表达式替换命令在文件名字符串中小于 10 的数字前面插入前导零

标签 python regex expression regex-group

我无法弄清楚如何使用替换命令来完成这项工作,这是我被指示要做的。我将此文本用作变量:

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.substr.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/

相关文章:

python - 使用 python 脚本过滤 SPARQL 查询中的数据

javascript - 按顺序加载网页内容

css - 在浏览器加载时解析 CSS 文件

javascript - 正则表达式构造函数和文字之间的反斜杠差异

C 中的复合条件 : if (0. 0 < a < 1.0)

Python-我应该为指数型数据使用什么颜色图方案?

java - 为什么 "hello\\s*world"与 "hello world"不匹配?

javascript - 用于验证最后一位数字的正则表达式

python - 请帮我将以下 lambda 翻译成人类语言

python - 使用 Azure Batch 中的托管标识在批处理池中使用 Python 通过 Key Vault 进行身份验证