python从字符串获取日期

Bal*_*Ali 3 python python-3.x

我有一个非静态日期结构的数据集

Fri, 13 Apr 2018 13:13:12 +0000 (UTC)
Mon, 26 Mar 2018 06:32:59 +0100
Tue, 05 Dec 2017 11:03:34 GMT
08 Dec 2016 12:00:24
Run Code Online (Sandbox Code Playgroud)

如何使用正则表达式从没有手动代码的字符串获取日期,(小时+偏移)和分钟.

Dir*_*Bit 10

使用timestring:

import timestring

dt_1 = "Fri, 13 Apr 2018 13:13:12 +0000 (UTC)"
dt_2 = "Mon, 26 Mar 2018 06:32:59 +0100"
dt_3 = "Tue, 05 Dec 2017 11:03:34 GMT"
dt_4 = "08 Dec 2016 12:00:24"

print(timestring.Date(dt_1))
print(timestring.Date(dt_2))
print(timestring.Date(dt_3))
print(timestring.Date(dt_4))
Run Code Online (Sandbox Code Playgroud)

编辑:

虽然我在这里,但这是另一种更酷的方法:

使用dparser:

import dateutil.parser as dparser

dt_1 = "Fri, 13 Apr 2018 13:13:12 +0000 (UTC)"
dt_2 = "Mon, 26 Mar 2018 06:32:59 +0100"
dt_3 = "Tue, 05 Dec 2017 11:03:34 GMT"
dt_4 = "08 Dec 2016 12:00:24"


print(dparser.parse(dt_1,fuzzy=True))
print(dparser.parse(dt_2,fuzzy=True))
print(dparser.parse(dt_3,fuzzy=True))
print(dparser.parse(dt_4,fuzzy=True))
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

2018-04-13 13:13:12+00:00
2018-03-26 06:32:59+01:00
2017-12-05 11:03:34+00:00
2016-12-08 12:00:24
Run Code Online (Sandbox Code Playgroud)

编辑2:

为什么dparser凉爽?

无效日期会引发ValueError:

invalid_dt = "Fri, 35 Apr 2018 13:13:12 +0000 (UTC)"
print(dparser.parse(invalid_dt,fuzzy=True))
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

ValueError: day is out of range for month
Run Code Online (Sandbox Code Playgroud)

编辑3:

为了得到day,month,year,hour,minutesecond:

print(dparser.parse(dt_1,fuzzy=True).day)     # 13
print(dparser.parse(dt_2,fuzzy=True).month)   # 3
print(dparser.parse(dt_3,fuzzy=True).year)    # 2017
print(dparser.parse(dt_4,fuzzy=True).hour)    # 12
print(dparser.parse(dt_4,fuzzy=True).minute)  # 0
print(dparser.parse(dt_4,fuzzy=True).second)  # 24
Run Code Online (Sandbox Code Playgroud)

编辑4:

如果你想得到一天的名字:

print(datetime.date(dparser.parse(dt_1,fuzzy=True)).strftime("%a"))  # Fri
Run Code Online (Sandbox Code Playgroud)