我正在研究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
Step1: I need to write a generalized code such that I can pass both strings in the same code.
Step2: Objective of the code is to convert string into list with elements separated by date.
例如,长字符串1到列表1 [2016年12月5日15:58:31 JSFKGSKDLFSGDSLKCBJ,2016年13月5日15:58:31 sdfasjdcakscsdv,2016年14月1日FSDKJGFDHKVJXDBVXD]
Step 3: and then take the element with the earliest date
output from above example: 01.14.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)
以上代码适用于单个日期格式的单个字符串。如何将其概括为首先检测字符串中的日期格式,然后相应地对其进行解析
您可以使用dateutil模块中的dateutil.parser,该模块可以为您解析日期时间字符串,而不考虑其格式
或者另一个收集datetime对象并根据它对原始列表排序的示例
输出将是
相关问题 更多 >
编程相关推荐