Как извлечь дату из строки питона - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу извлечь date из string, используя пакет dateutil Python.date поставляется в разных форматах, но часть day в date отсутствует ни в одном из этих string.

Month когда написано в алфавитах предшествует year как Sep 2016, но в то время как записано как числовое успешно year как 2016-09 или 201609

import dateutil.parser as dparser
print(dparser.parse("The file is for month Sep 2016.",fuzzy=True).month
   9
print(dparser.parse("The file is for month Sept-2016.",fuzzy=True).month)
   9
print(dparser.parse("The file is for month 2016-09.",fuzzy=True).month)
   9

Какразобраться со случаем, когда между year и month нет дефиса -, как показано ниже -

print(dparser.parse("The file is for month 201609.",fuzzy=True).month)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-123-566e083c8313> in <module>()
----> 1 dparser.parse("The file is for month 201609.",fuzzy=True).month

~\AppData\Local\Continuum\anaconda3\lib\site-packages\dateutil\parser.py in parse(timestr, parserinfo, **kwargs)
   1180         return parser(parserinfo).parse(timestr, **kwargs)
   1181     else:
-> 1182         return DEFAULTPARSER.parse(timestr, **kwargs)
   1183 
   1184 

Есть ли в этой библиотеке возможность сделать это?

1 Ответ

0 голосов
/ 26 сентября 2019

Совершенно другое решение, если вы не возражаете против использования внешнего пакета, - это использование dateparser (https://pypi.org/project/dateparser/), который может анализировать даты в нескольких форматах (даже включает некоторые функции NLP)

В противном случае выможно использовать регулярное выражение для извлечения этого формата даты (например, «[0-9] {6}»), а затем отделить год от месяца. Это работает, только если год предшествует месяцу.

...