我需要重命名以给定目录中的数字开头的文件,我拥有的文件是这样的:
"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"
所以我需要在它存在时删除:
我的第一次尝试是使用以下正则表达式:
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方法或任何类似方法的使用。
答案 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'
^
将确保正则表达式仅发生在字符串的开头。
当满足单个点时,还要注意要删除的\.
。在正则表达式中,单个点表示任何字符。