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

用于复杂日期字符串解析的Python strTime或替代方法,python,parsing,python-2.7,datetime,Python,Parsing,Python 2.7,Datetime,我得到了一个需要读入数据库的日期时间表示的大列表。我使用Python是因为它会摇摆。字符串的格式非常糟糕,它们不精确到秒,没有说明时区,小时也没有前导0。所以他们看起来更像这样: April 29, 2013, 7:52 p.m. April 30, 2013, 4 p.m. 你会注意到,如果在4:00到4:01之间发生了什么事情,它也会降低分钟数。无论如何,尝试用time.strtime解析这些,但声明小时必须是十进制数字[01:12]或[01:24]。因为没有任何东西是用0填充的,所以我想

我得到了一个需要读入数据库的日期时间表示的大列表。我使用Python是因为它会摇摆。字符串的格式非常糟糕,它们不精确到秒,没有说明时区,小时也没有前导0。所以他们看起来更像这样:

April 29, 2013, 7:52 p.m.
April 30, 2013, 4 p.m.
你会注意到,如果在4:00到4:01之间发生了什么事情,它也会降低分钟数。无论如何,尝试用time.strtime解析这些,但声明小时必须是十进制数字[01:12]或[01:24]。因为没有任何东西是用0填充的,所以我想知道是否还有其他东西可以传递给strtime来接受小时而不使用0;或者如果我应该尝试拆分,然后填充字符串;或者使用其他方法构造datetime对象

另外,strtime似乎不接受上午/下午作为上午或下午,所以我也必须纠正这一点

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

我正在使用Python2.7,并导入了一些Python3特性

from __future__ import (print_function, unicode_literals)

最灵活的解析器是包的一部分;它吃你的早餐:

>>> 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)

最灵活的解析器是包的一部分;它吃你的早餐:

>>> 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)

你能做一些预处理吗?这就是它所要求的,我可以预先处理,因为我有Python中的字符串。。。所以我可以做任何我想做的操作。你能做一些预处理吗?这就是它所要求的,我可以预先处理,因为我有Python中的字符串。。。所以我可以做任何我想做的操作。使用dateutil的唯一问题是,有少数人被它的bug咬过,并且会大声抱怨任何其他人在任何情况下都使用过它。好吧,那,正确地与pytz集成可能有点痛苦。使用dateutil的唯一问题是,有少数人被它的bug咬过,并且会大声抱怨任何其他人在任何情况下使用过它。好吧,那,正确地与pytz集成可能有点痛苦。否则,它会摇摆不定。