2015-04-23 2 views
1

У меня есть следующий формат для моей даты 2014-02-23T18:42:26.000009. Я хочу, чтобы извлечь дату, поэтому я использовал следующий код:Striptime Python частичное совпадение

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 

Любые идеи?

+1

Это похоже на формат ISO 8601. Если это так, см. Этот предыдущий вопрос: http://stackoverflow.com/questions/127803/how-to-parse-iso-formatted-date-in-python –

+0

О, а также: это не «striptime», это 'strptime', из соединения' str'ing 'p'arse' time'. Функция Python называется после функции POSIX с тем же именем. (Подробнее см. 'Man 3 strptime'.) –

ответ

4

Вы должны добавить остатки вашей строки на сегодняшний день format.So заменить '%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) 
+0

Спасибо за быстрый ответ. У меня много записей (более 600 000 записей), и они не смогут сравниться с ними, используя то же значение выше. Идеи? – user3089324

+0

@ user3089324 Добро пожаловать. в этом случае вы можете использовать некоторые синтаксические анализаторы даты, такие как 'dateutil' – Kasramvd

+0

@ user3089324 checkout the edit! – Kasramvd

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

выход: 2014-02-23

Далее вы можете использоватьstrip('-')возвращает список, содержащий[ '2014', '02', '23']

Смежные вопросы