kra*_*r65 3 python string datetime
我有几个字符串,我想从中得到日期时间.它们的格式如下:
Thu 2nd May 2013 19:00
Run Code Online (Sandbox Code Playgroud)
我几乎知道如何将其转换为日期时间,除了我遇到"2 nd "的问题.我现在有以下内容
>>> datetime.strptime('Thu 02 May 2013 19:00', '%a %d %B %Y %H:%M')
datetime.datetime(2013, 5, 2, 19, 0)
Run Code Online (Sandbox Code Playgroud)
这个月的日期工作正常,零填充数字,但是当我尝试时2nd,它会产生一个ValueError:
>>> datetime.strptime('Thu 2nd May 2013 19:00', '%a %d %B %Y %H:%M')
Traceback (most recent call last):
File "<input>", line 1, in <module>
(data_string, format))
ValueError: time data 'Thu 2nd May 2013 19:00' does not match format '%a %d %B %Y %H:%M'
Run Code Online (Sandbox Code Playgroud)
在datetime指令列表中,我找不到与日期的有序值(第1,第2,第3等)相关的任何内容.有谁知道我怎么能让这个工作?欢迎所有提示!
它是第三方库,具有强大的解析器,可以处理这些事情.
from dateutil.parser import parse
s = 'Thu 2nd May 2013 19:00'
d = parse(s)
print(d, type(d))
# 2013-05-02 19:00:00 <class 'datetime.datetime'>
Run Code Online (Sandbox Code Playgroud)
一个简短的警告(在你的情况下不会真的发生):如果dateutil在字符串中找不到你日期的一个方面(比如说你遗漏了一个月)那么它将默认为default参数.默认为当前日期,时间为00:00:00.显然,如果需要,您可以使用其他datetime对象覆盖它.
最简单的安装dateutil方法可能是使用pip命令pip install python-dateutil.
您可以预先填充原始字符串以调整适合您的日期strptime,例如:
from datetime import datetime
import re
s = 'Thu 2nd May 2013 19:00'
amended = re.sub('\d+(st|nd|rd|th)', lambda m: m.group()[:-2].zfill(2), s)
# Thu 02 May 2013 19:00
dt = datetime.strptime(amended, '%a %d %B %Y %H:%M')
# 2013-05-02 19:00:00
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1044 次 |
| 最近记录: |