繁体   English   中英

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

[英]Python strptime or alternative for complex date string parsing

我得到了大量需要将其读入数据库的日期时间表示形式。 我正在使用Python(因为它会晃动)。 字符串格式很糟糕,它们的精确度不能精确到秒,没有说明时区,小时数也没有前导0。因此,它们看起来更像这样:

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

您会注意到,如果在4:00和4:01之间发生某事,它也会减少分钟(哦)。 无论如何,尝试使用time.strptime解析它们,但是文档指出小时必须是十进制数字[01:12](或[01:24])。 因为没有东西用0填充,所以我想知道是否还有其他东西可以传递给strptime来接受小时数而不用0开头; 或者如果我应该尝试拆分,然后填充字符串; 或使用其他一些构造datetime对象的方法。

另外,看起来strptime不能将AM / PM接受为“ AM”或“ PM”,因此我也必须对其进行更正。

注意,我不能批量处理这些字符串。 我一次从一个外部应用程序接收到它们,该应用程序有时使用格式良好的Unix时期时间戳记,但偶尔会使用这种格式。 即时处理它们是唯一的选择。

我正在使用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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM