在Python中将不同的日期数据规范化为单一格式

时间:2015-10-10 06:45:11

标签: python date datetime

我目前正在分析一个包含许多不同日期类型的日期集,例如

12/31/1991
December 10, 1980
September 25, 1970
2005-11-14
December 1990
October 12, 2005
1993-06-26

有没有办法将所有日期数据标准化为单一格式' YYYY-MM-DD' ?我熟悉Python中的datetime包,但是解决这个问题的最佳方法是它可以处理所有不同的日期类型。

2 个答案:

答案 0 :(得分:4)

如果你可以使用库,你可以使用dateutil library(我相信它已经安装了Python 3 +),特别是dateutil.parser.parse函数,并将所有日期解析为datetime对象,然后使用datetime.datetime.strftime()将其解析为格式为'YYYY-MM-DD'的字符串。示例 -

>>> s = """12/31/1991
... December 10, 1980
... September 25, 1970
... 2005-11-14
... December 1990
... October 12, 2005
... 1993-06-26"""

>>> from dateutil import parser
>>> for i in s.splitlines():
...     d = parser.parse(i)
...     print(d.strftime("%Y-%m-%d"))
...
1991-12-31
1980-12-10
1970-09-25
2005-11-14
1990-12-10
2005-10-12
1993-06-26

需要注意的是,dateutil.parser.parse将使用当前日期时间来弥补日期时间的任何部分(如果字符串中缺少这些部分)(如上面'December 1990'的解析中所示,被解析为 - 1990-12-1010是当前日期。

答案 1 :(得分:0)

我已经解决了这个问题:

from  dateutil.parser import parse
dt = parse(str(row))
print(dt.strftime('%Y-%m-%d'))

它能够处理不同的日期类型。