Я работаю над Python. У меня много длинных текстов данных. Каждый текст можно рассматривать как строку. Внутри каждой строки мне нужно разделить строку на элементы списка, где бы ни присутствовала дата.
eg. long string1 (date format: mm.dd.yyyy):
05.12.2016 15:58:31 jsfkgskdlfsgfdslkcbj 05.13.2016 15:58:31 sdfasjdcakscsdv
01.14.2016fsdkjgfdhkvjxdbvxd
eg. long string2 (date format: dd/mm/yyyy):
05/12/2016 15:58:31 jsfkgskdlfsgfdslkcbj 05.1.2016 15:58:31 sdfasjdcakscsdv
21/11/2016fsdkjgfdhkvjxdbvxd
Шаг 1: Мне нужно написать обобщенный код, чтобы можно было передавать обе строки в одном и том же коде.
Step2: Цель кода - преобразовать строку в список с элементами
разделены по дате.
например. длинная строка 1 в список 1
[05.12.2016 15:58:31 jsfkgskdlfsgfdslkcbj, 05.13.2016 15:58:31 sdfasjdcakscsdv, 14.01.2016fsdkjgfdhkvjxdbvxd]
Шаг 3: и затем взять элемент с самой ранней датой
вывод из приведенного выше примера: 14.01.2016fsdkjgfdhkvjxdbvxd
Я получил помощь для выполнения шагов 2 и 3, и я могу сделать это, когда все строки имеют одинаковый формат даты. Но моя задача - сначала прочитать строку и выяснить, какой формат даты она использует, а затем проанализировать и отсортировать ее по дате
У меня есть код, если указан один формат даты.
text = '05/12/2016 15:58:31 jsfkgskdlfsgfdslkcbj 05.1.2016 15:58:31 sdfasjdcakscsdv 21/11/2016fsdkjgfdhkvjxdbvxd'
list1 = list()
for d, t in zip(*[iter(re.split(r'(\d+[\/.]\d+[\/.]\d+ \d+:\d+:\d+)', text)[1:])]*2):
list1.append(d + t)
from datetime import datetime
list_sorted=sorted(list1,key=lambda s: datetime.strptime(s[0:19], "%d.%m.%Y %H:%M:%S") if '.' in s[0:19] else datetime.strptime(s[0:19], "%d/%m/%Y %H:%M:%S"))
complaint = list_sorted[0]
print(complaint)
Приведенный выше код хорошо работает для одной строки для одного формата даты. Как мне обобщить, чтобы сначала определить формат даты в строке, а затем проанализировать его соответственно