Как мне использовать strptime из такого шаблона? - PullRequest
3 голосов
/ 04 декабря 2008

Мне нужно использовать datetime.strptime для текста, который выглядит следующим образом.

«Какой-то случайный текст неопределенной длины 28 января 1986 г.»

как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 04 декабря 2008

Вы можете найти этот вопрос полезным. Я дам ответ, который я дал там, который должен использовать модуль dateutil . Это принимает нечеткий параметр, который будет игнорировать любой текст, который не похож на дату. а именно:

>>> from dateutil.parser import parse
>>> parse("Some Random text of undetermined length Jan 28, 1986", fuzzy=True)
datetime.datetime(1986, 1, 28, 0, 0)
3 голосов
/ 04 декабря 2008

Не пытайтесь использовать strptime для захвата текста без даты. Для хорошего нечеткого соответствия отлично подходит dateutil.parser, но если вы знаете формат даты, вы можете использовать регулярное выражение для поиска даты в строке, а затем использовать strptime, чтобы превратить ее в объект datetime, например так:

import datetime
import re

pattern = "((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]+, [0-9]+)"
datestr = re.search(, s).group(0)
d = datetime.datetime.strptime(datestr, "%b %d, %Y")
2 голосов
/ 04 декабря 2008

Используя последние 3 слова, нет необходимости в регулярных выражениях (используя модуль time):

>>> import time
>>> a="Some Random text of undetermined length Jan 28, 1986"
>>> datetuple = a.rsplit(" ",3)[-3:]
>>> datetuple
['Jan', '28,', '1986']
>>> time.strptime(' '.join(datetuple),"%b %d, %Y")
time.struct_time(tm_year=1986, tm_mon=1, tm_mday=28, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=28, tm_isdst=-1)
>>> 

Использование модуля datetime:

>>> from datetime import datetime
>>> datetime.strptime(" ".join(datetuple), "%b %d, %Y")
datetime.datetime(1986, 1, 28, 0, 0)
>>> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...