Я работаю над набором данных, в котором мне нужно извлечь все доступные даты. Даты могут быть в следующем формате:
04/20/2009; 04/20/09; 4/20/09; 4/3/09
Mar-20-2009; Mar 20, 2009; March 20, 2009; Mar. 20, 2009; Mar 20 2009;
20 Mar 2009; 20 March 2009; 20 Mar. 2009; 20 March, 2009
Mar 20th, 2009; Mar 21st, 2009; Mar 22nd, 2009
Feb 2009; Sep 2009; Oct 2010
6/2008; 12/2009
2009; 2010
Я написал следующий код:
df['dates'] = df['text'].str.extract(r'((?:\d{1,2}[/ ])?(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec[a-z.,]*[- ])?(?:\d{1,2}[a-z-, /]{1,4})?(?:\d{2,4}))')
Это дает мне правильный результат, за исключением некоторого текста, такого как:
ВЫХОД ТЕКСТА
Лаборатория: B12 969 2007 \ n 12 969 # должен дать 2007
в течение 35 лет, продано в 1985 году \ n 35 # должен дать 1985
x 14 лет, которые умерли, я ... 14 # не следует считать
Я пытался изменить код извлечения на
r'((?:\d{1,2}[/ ])?(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec[a-z.,]*[- ])?(?:\d{1,2}[a-z-, ]{1,4})?(?:[/]\d{2})?(?:\d{4})?)'
Но с этим весь результат стал плохим