Определить и извлечь дату из строки - Python - PullRequest
1 голос
/ 05 мая 2020

Я хочу идентифицировать и извлекать дату из ряда различных строк. Даты могут иметь другой формат. Я использовал пакет datefinder, но у меня возникли проблемы с сохранением вывода.

Цель: извлечь дату из строки, которая может быть отформатирована различными способами (ie 22 апреля или 22 апреля или 22 апреля и т. Д. c), и если нет date, установите значение «Нет» и добавьте к списку дат либо дату, либо «Нет».

См. примеры ниже.

Пример 1: (Это возвращает дату, но не добавляется в мой список)


import datefinder

extracted_dates = []
sample_text = 'As of February 27, 2019 there were 28 dogs at the kennel.'

matches = datefinder.find_dates(sample_text)
for match in matches:
    if match == None:
        date = 'None'
        extracted_dates.append(date)
    else:
        date = str(match)
        extracted_dates.append(date)

Пример 2: (Это не возвращает дату и не добавляется в мой список)

import datefinder

extracted_dates = []
sample_text = 'As of the date, there were 28 dogs at the kennel.'

matches = datefinder.find_dates(sample_text)
for match in matches:
    if match == None:
        date = 'None'
        extracted_dates.append(date)
    else:
        date = str(match)
        extracted_dates.append(date)

1 Ответ

1 голос
/ 05 мая 2020

Я пробовал использовать ваш пакет, но мне показалось, что в вашем примере не было быстрого и общего способа извлечения реальной даты.

Вместо этого я использовал пакет DateParser и другие в частности метод search_dates

Я кратко протестировал его только на ваших примерах.

from dateparser.search import search_dates

sample_text = 'As of February 27, 2019 there were 28 dogs at the kennel.'
extracted_dates = []

# Returns a list of tuples of (substring containing the date, datetime.datetime object)
dates = search_dates(sample_text)

if dates is not None:
  for d in dates:
    extracted_dates.append(str(d[1]))
else:
  extracted_dates.append('None')

print(extracted_dates)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...