我正在浏览一个目录,寻找特定的文件名。我可以从每个文件名中删除文档标记'.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'
我的程序不会知道哪些文件有时间戳。一些缺少时间戳的文件自然也会以一两个数字结尾。据我所知,只有标记的文件名将以此格式_######
结束。
如何使用正则表达式识别末尾_######
附加了六位数的文件名,并从字符串中删除这些数字进行比较?
答案 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)