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

在Python中将不同的日期数据规范化为单一格式,python,date,datetime,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包,但是解决这个问题的最佳方法是什么,这样它就可以处理所有不同的日期类型。我已经解决了这个问题: from dateutil.parse

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

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包,但是解决这个问题的最佳方法是什么,这样它就可以处理所有不同的日期类型。

我已经解决了这个问题:

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

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

如果您可以使用库,那么可以使用(我相信它已经为Python 3+安装了),特别是
dateutil.parser.parse
函数,将所有日期解析为datetime对象,然后使用将它们解析回格式为-
'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-10
,因为
10
是当前日期).

1990年12月
实际上是无效的,但它仍然显示
1990-12-10
。有什么方法可以标记吗?让我检查一下是否有什么可以做的。使用正则表达式,我已经解决了这个问题。Thanks@RakeshRanjanSukla很高兴我也能帮上忙!:-)。此外,如果您认为答案有帮助,我希望您接受答案(通过单击答案左侧的勾号),这将对社区有帮助。或者你也可以接受你自己的答案(包括你是如何解决你所面临的问题的)。谢谢:)