Striptime Python部分匹配

时间:2015-04-23 06:58:12

标签: python

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

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您需要将字符串的剩余部分添加到日期格式。所以将'%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)

或者作为一种更通用的方式,您可以使用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)

如果您只想要date

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

答案 1 :(得分:0)

import re
time="2014-02-23T18:42:26.000009"
print re.sub('T.*','',time)

输出:2014-02-23

此外,您可以使用 strip('-') 返回包含 [&#39; 2014&#39;,&#39; 02& #39;,&#39; 23&#39;]