正则表达式:从文件名中删除时间戳

时间:2016-04-12 20:21:00

标签: python regex string python-2.7

我正在浏览一个目录,寻找特定的文件名。我可以从每个文件名中删除文档标记'.xml'以进行比较。问题是,大约10%的人在标题末尾有一个六位数的时间戳。

file_list = os.listdir(directory_address)

for entry in file_list:        
        re.sub('\.xml$','', entry).upper()


#file name examples

filename_1 = 'normal_filename'

filename_2= 'another_normal_filename_A23'

filename_3 = 'stamped_file_name_085373'

我的程序不会知道哪些文件有时间戳。一些缺少时间戳的文件自然也会以一两个数字结尾。据我所知,只有标记的文件名将以此格式_######结束。

如何使用正则表达式识别末尾_######附加了六位数的文件名,并从字符串中删除这些数字进行比较?

2 个答案:

答案 0 :(得分:3)

您可以使用\d{6}$模式匹配文件名末尾的6位数字,并使用re.sub()删除它们:

>>> import re
>>> filename = 'stamped_file_name_085373'
>>> filename = re.sub(r"_\d{6}$", "", filename)
>>> filename
'stamped_file_name'

答案 1 :(得分:2)

eugene给出的答案是完美的。我想进一步增强这个正则表达式,以便它可以在文件名后面的任意位数的情况下工作。这是修改后的正则表达式:

filename = re.sub(r'_\d*$', "", filename)