我目前正在分析一个包含许多不同日期类型的日期集,例如
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包,但是解决这个问题的最佳方法是它可以处理所有不同的日期类型。
答案 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-10
为10
是当前日期。
答案 1 :(得分:0)
我已经解决了这个问题:
from dateutil.parser import parse
dt = parse(str(row))
print(dt.strftime('%Y-%m-%d'))
它能够处理不同的日期类型。