Python strptime或用于复杂日期字符串解析的替代方法



我得到了一个需要读入数据库的日期-时间表示的大列表。我正在使用Python(因为它很棒)。这些字符串的格式非常非常糟糕,它们不精确到秒,没有指定时区,小时也没有前导0。所以它们看起来更像这样:

April 29, 2013, 7:52 p.m.
April 30, 2013, 4 p.m.

你会注意到,如果在4点到4点01分之间发生了什么事情,时间也会下降。总之,试着用时间来解析这些。但是文档声明小时必须是十进制数[01:12](或[01:24])。因为没有任何东西是用0填充的,我想知道是否有其他东西我可以传递给strptime来接受没有0的小时;或者如果我应该尝试拆分,那么填充字符串;或者使用其他方法来构造datetime对象。

而且,它看起来不像strptime接受AM/PM为"A.M."或"P.M.",所以我也必须纠正这一点…

注意,我不能在批处理中处理这些字符串。我从一个外部应用程序接收它们,该应用程序有时使用格式良好的Unix epoch时间戳,但偶尔也使用这种格式。动态地处理它们是唯一的选择。

我正在使用Python 2.7,并导入了一些Python 3的特性。

from __future__ import (print_function, unicode_literals)

最灵活的解析器是dateutil包的一部分;它把你的输入当早餐吃:

>>> from dateutil import parser
>>> parser.parse('April 29, 2013, 7:52 p.m.')
datetime.datetime(2013, 4, 29, 19, 52)
>>> parser.parse('April 30, 2013, 4 p.m.')
datetime.datetime(2013, 4, 30, 16, 0)

最新更新