Striptime Python 部分匹配

use*_*324 2 python

我的日期有以下格式2014-02-23T18:42:26.000009。我想提取日期,所以我使用了以下代码:

from datetime import datetime
date_object = datetime.strptime('2014-02-23T18:42:26.000009', '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误消息:

Traceback (most recent call last):
File "C:/Users/d774911/PycharmProjects/GlobalData/Test2.py", line 4, in <module>
date_object = datetime.strptime('2014-02-23T18:42:26.000009', '%Y-%m-%d')
File "C:\Python34\lib\_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "C:\Python34\lib\_strptime.py", line 340, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: T18:42:26.000009
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Kas*_*mvd 5

您需要将字符串的剩余部分添加到日期格式。因此替换'%Y-%m-%d' with'%Y-%m-%dT18:42:26.000009'

>>> date_object = datetime.strptime('2014-02-23T18:42:26.000009', '%Y-%m-%dT18:42:26.000009')
>>> date_object
datetime.datetime(2014, 2, 23, 0, 0)
Run Code Online (Sandbox Code Playgroud)

或者作为更通用的方式,您可以使用dateutil.parser

>>> from dateutil.parser import parse
>>> parse('2014-02-23T18:42:26.000009', fuzzy=True)
datetime.datetime(2014, 2, 23, 18, 42, 26, 9)
Run Code Online (Sandbox Code Playgroud)

And if you just want the date :

>>> parse('2014-02-23T18:42:26.000009', fuzzy=True).date()
datetime.date(2014, 2, 23)
Run Code Online (Sandbox Code Playgroud)