使用.group()重命名带有正则表达式的文件

时间:2016-12-25 18:55:13

标签: python regex

我需要重命名以给定目录中的数字开头的文件,我拥有的文件是这样的:

"my_folder/1. file_one.csv"
"my_folder/2.file_two_1.csv"
"my_folder/file_three.csv"
"my_folder/file_four.csv"

我想要这样的文件:

"my_folder/file_one.csv"
"my_folder/file_two_1.csv"
"my_folder/file_three.csv"
"my_folder/file_four.csv"

所以我需要在它存在时删除:

  1. 乞讨的数字
  2. 空间
  3. 我的第一次尝试是使用以下正则表达式:

    re.sub('\d.\s*','',name)
    

    但是它制作文件的名称就是这样的情况:

    " 2.file_two_1.csv" - > " file_two_csv"

    当我尝试使用.group()

    时出错
    re.sub('/(\d.\s*)','',name).group(1)
    "'unicode' object has no attribute 'group' "
    

    是否可以将.group()用于那样的情况?

    PD。我知道我可以使用这个表达式解决问题:

    re.sub('/(\d.\s*)','/',name)
    

    我的问题是关于.group方法或任何类似方法的使用。

1 个答案:

答案 0 :(得分:2)

使用os的一种方法是:

a = 'my_folder/1. file_one.csv'    
os.path.join(os.path.split(a)[0], re.sub('^\d\.\s*','',os.path.split(a)[1]))

输出:'my_folder/file_one.csv'

^将确保正则表达式仅发生在字符串的开头。

当满足单个点时,还要注意要删除的\.。在正则表达式中,单个点表示任何字符。