Вам не нужно regex
, потому что он находится в начале строки и имеет 10 символов - поэтому используйте [:10]
Когда вы получите 2020-02-24
(old_name[:10]
), тогда вы можете преобразовать в datetime
, вычесть timedelta(days=1)
, преобразовать обратно в строку 2020-02-23
и объединить с остальной частью имени old_name[10:]
import datetime
old_name = '2020-02-24daily_report.xlsx'
old_date = old_name[0:10]
today = datetime.datetime.strptime(old_date, '%Y-%m-%d')
yesteday = today - datetime.timedelta(days=1)
new_date = yesteday.strftime('%Y-%m-%d')
new_name = new_date + old_name[10:]
print(new_name)
Результат:
2020-02-23daily_report.xlsx