Python 如何在正则表达式中插入数字

Python 如何在正则表达式中插入数字,python,regex,Python,Regex,我试图在两个正则表达式组之间插入一个数字;然而,我不知道如何避免提及不同的组号 我正在尝试使用正则表达式更新目录中的文件名。基本上,我有一季的电视节目,所有的文件名都应该遵循“show-S##E##E-集标题”的模式 我已经编写了一个简单的循环来迭代文件并设置命名,但我遇到的问题是,并不是每个文件中都将事件编号设置为2位数字。我在下面介绍了我试图用来解决此问题的循环 我尝试使用re.sub()将S##E标识为组1,将以下数字标识为组2,然后在两个组之间插入一个“0”,但我最终引用了未定义的组10

我试图在两个正则表达式组之间插入一个数字;然而,我不知道如何避免提及不同的组号

我正在尝试使用正则表达式更新目录中的文件名。基本上,我有一季的电视节目,所有的文件名都应该遵循“show-S##E##E-集标题”的模式

我已经编写了一个简单的循环来迭代文件并设置命名,但我遇到的问题是,并不是每个文件中都将事件编号设置为2位数字。我在下面介绍了我试图用来解决此问题的循环

我尝试使用re.sub()将S##E标识为组1,将以下数字标识为组2,然后在两个组之间插入一个“0”,但我最终引用了未定义的组10。我不知道如何在不引用组0或插入反斜杠的情况下转义组引用

files = [f for f in os.listdir(os.path.abspath(os.curdir)) if os.path.isfile(f)]
for file in files:
    os.rename(file, re.sub(r'(S\d+E)(\d\s)',r'\10\2',file))


所有文件的预期结果应遵循S###E##模式,即使是小于10集的情况。第一个版本导致一个错误,因为我指的是一个不存在的组。第二个似乎根本不会改变文件名。

中有关于这一点的说明:

\g
使用相应的组号<因此,code>\g相当于
\2
,但在诸如
\g0
之类的替换中并不含糊<代码>\20将被解释为对组20的引用,而不是对组2后跟文字字符“0”的引用

因此,请以更详细的方式写出组引用,这样就不会有歧义:

os.rename(file, re.sub(r'(S\d+E)(\d\s)',r'\g<1>0\g<2>',file))
os.rename(文件,re.sub(r'(S\d+E)(\d\S'),r'\g0\g',文件))

您能提供(简化的)预期输入和输出吗?我正在迭代一系列文件。每个文件都以“插曲”开头,我正在尝试将其转换为“Show-S##E##”,并确保我使用2位数字来标识该模式下的季节和插曲。我今天早些时候阅读了此页。。。很抱歉问了一个我应该知道答案的问题。谢谢你的帮助!每个人都会这样。实际上,在我想亲自检查文档之前,我已经深入到python源代码中了:P
os.rename(file, re.sub(r'(S\d+E)(\d\s)',r'\g<1>0\g<2>',file))