У меня есть несколько тысяч файлов с указанием даты и времени в их имени.
К сожалению, разделитель между блоками даты и времени не всегда одинаков.
Пример:
- Data_trul-100A1-Berlin_2019-01-31_150480.dat
- Data_tral-2000B2-Frankf-2018_02_27-190200.dat
- Data_bash-300003_Hambrg_2017-04-12_210500.dat
Мне удалось найти часть datetime в строке с регулярным выражением
import re
strings = ['Data_trul-100A1-Berlin_2019-01-31_150430.dat',
'Data_tral-2000B2-Frankf-2018_02_27-190200.dat',
'Data_bash-300003_Hambrg_2017-04-12_210500.dat']
for part_string in strings:
match = re.search('\d{4}[-_]\d{2}[-_]\d{2}[-_]\d{6}', part_string)
print(match.group())
Однако теперь я застрял, чтобы преобразовать группу в datetime
from datetime import datetime
date = datetime.strptime(match.group(), "%Y-%m-%d_%H%M%S")
потому что мне нужно указать тире или подчеркивание.
Я пришел к следующему решению, чтобы просто заменить его, но это похоже на обман.
for part_string in strings:
part_string = part_string.replace('-',"_")
match = re.search('\d{4}_\d{2}_\d{2}_\d{6}', part_string)
date = datetime.strptime(match.group(), "%Y_%m_%d_%H%M%S")
print(date)
Есть ли более элегантный способ? Используя регулярные выражения, чтобы найти делитель и передать его в strptime?