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

pyt*_*hon 5 python datetime date

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

12/31/1991
December 10, 1980
September 25, 1970
2005-11-14
December 1990
October 12, 2005
1993-06-26
Run Code Online (Sandbox Code Playgroud)

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

pyt*_*hon 5

我已经解决了这个问题:

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

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


Ana*_*mar 5

如果可以使用库,则可以使用该dateutil(我相信它已经为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
Run Code Online (Sandbox Code Playgroud)

一件事要注意,dateutil.parser.parse将使用当前日期时间来弥补,如果他们在字符串中缺少的日期时间的任何部件(如可在上面的分析中可以看出'December 1990',这得到了解析为- 1990-12-1010当前日期)。