2016-04-12 3 views
1

Я читаю справочник, ищущий конкретные имена файлов. Я могу удалить тег документа '.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' 

Моя программа не знает с места в карьер, у файлов есть отметка времени. Некоторые файлы, не имеющие метки времени, также естественно заканчиваются одним или двумя номерами. Насколько мне известно, только штампованные имена файлов заканчиваются в этом формате _######.

Как я могу использовать регулярное выражение распознавать имена файлов ровно шесть цифр, прикрепленных к концу _###### и удалить эти цифры из строки для Comparision?

ответ

2

Вы можете использовать \d{6}$ шаблон, чтобы соответствовать ровно 6 цифр в конце имени файла и удалить их с re.sub():

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

Спасибо за помощь! –

1

Ответ дается Юджине совершенен. Я хотел бы еще больше расширить это регулярное выражение, чтобы оно работало в случае любого количества цифр после имени файла. Вот модифицированное регулярное выражение:

filename = re.sub(r'_\d*$', "", filename) 
Смежные вопросы