Извлечение даты от строки в Python

Как я могу извлечь дату из строки как "обезьяна 10.07.2010 любовных бананов"?Спасибо!

64
задан dmpop 18 July 2010 в 15:46
поделиться

2 ответа

Если дата задана в фиксированной форме, вы можете просто использовать регулярное выражение для извлечения даты и «datetime.datetime.strptime» для анализа даты:

match = re.search(r'\d{4}-\d{2}-\d{2}', text)
date = datetime.strptime(match.group(), '%Y-%m-%d').date()

В противном случае, если дата задана в произвольной форму, вы не можете легко ее извлечь.

57
ответ дан 24 November 2019 в 15:37
поделиться

Использование python-dateutil :

In [1]: import dateutil.parser as dparser

In [18]: dparser.parse("monkey 2010-07-10 love banana",fuzzy=True)
Out[18]: datetime.datetime(2010, 7, 10, 0, 0)

Недействительные даты вызывают ValueError :

In [19]: dparser.parse("monkey 2010-07-32 love banana",fuzzy=True)
# ValueError: day is out of range for month

Он может распознавать даты во многих форматах:

In [20]: dparser.parse("monkey 20/01/1980 love banana",fuzzy=True)
Out[20]: datetime.datetime(1980, 1, 20, 0, 0)

Обратите внимание, что он делает предположение, если дата неоднозначна:

In [23]: dparser.parse("monkey 10/01/1980 love banana",fuzzy=True)
Out[23]: datetime.datetime(1980, 10, 1, 0, 0)

Но способ синтаксического анализа неоднозначных дат можно настроить:

In [21]: dparser.parse("monkey 10/01/1980 love banana",fuzzy=True, dayfirst=True)
Out[21]: datetime.datetime(1980, 1, 10, 0, 0)
134
ответ дан 24 November 2019 в 15:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: