可变日期时间记录以及如何将所有记录转换为一种格式

Variable Datetime Records and how to convert all into one format

我有一个大约 15000 行长的日期时间字符串列表,所有格式都不同,即一些包括微秒,一些缺少日期等。我想知道是否有一个解析器说:

这里应该是:'%Y-%m-%d %H:%M:%S.%f

如有遗漏,请填写

%Y <- 2014

%m <- 01

%d <- 01

...

我只是被要求举例说明我的数据状态,所以我将给出 5 行的一些内容

2014-7-15 6:35:13.000005
2014-7-10 6:35:15
2014-7-11 6:35
September-15, 6:35:13.000005

这些是不同类型的格式。我知道我需要对第一个示例和第四个示例进行不同的解析,但是,给定第一个和第二个,或者第二个和第三个,我们会说,是否有一个快速的,如果它 missin .%f in %Y-%m-%d %H:%M:%S.%f 然后设置 %f = 00000。这样有意义吗?

python-dateutil 包也许能帮到你。它接受日期的多种文本格式,以及 returns 一个 Python datetime 对象。例如,对于您的示例:

from dateutil.parser import parse

>>> parse('2014-7-15 6:35:13.000005')
datetime.datetime(2014, 7, 15, 6, 35, 13, 5)

>>> parse('2014-7-10 6:35:15')
datetime.datetime(2014, 7, 10, 6, 35, 15)

>>> parse('2014-7-11 6:35')
datetime.datetime(2014, 7, 11, 6, 35)

>>> parse("September-15, 6:35:13.000005")
datetime.datetime(2015, 9, 15, 6, 35, 13, 5)

一旦你有了一个 datetime 对象,你可以使用 strftime() 和你喜欢的格式字符串以你喜欢的任何格式自由输出它:

>>> parse('2014-7-11 6:35').strftime('%Y-%m-%d %H:%M:%S.%f')
'2014-07-11 06:35:00.000000'

>>> parse('September-15, 6:35:13.00000').strftime('%Y-%m-%d %H:%M:%S.%f')
'2015-09-15 06:35:13.000000'

python-dateutil 软件包是 available here on PyPi 并且可以安装:

pip install python-dateutil