Python-正则表达式不替换目录字符串

时间:2018-09-14 15:57:17

标签: python regex operating-system

我正在使用以下功能从目录中的文件中删除特定的字符串模式:

import os
for filename in os.listdir(path):
   os.rename(filename, filename.replace(r'^[A-Z]\d\d\s-\s[A-Z]\d\d\s-\s$', ''))

模式如下,其中A是任何大写字母,而#是0-9之间的任何数字:

  

A ##-A ##-

我的正则表达式与regex101上的此格式匹配。当我运行上述函数时,它会正确完成,但是目录名称不会更改。我要去哪里错了?

1 个答案:

答案 0 :(得分:3)

replace字符串方法不支持正则表达式。

您需要导入re module并使用其sub方法。

因此您的代码可能如下所示:

import os
import re
for filename in os.listdir(path):
   os.rename(filename, re.sub(r'^[A-Z]\d\d\s-\s[A-Z]\d\d\s-\s', '', filename))

但是请不要忘记标记等。

编辑:$已从模式中删除,因为文件名不止于此。