2017-10-09 1 views
-2

Comment extraire la date au format '29 mai 2002' [mm jj aaaa] à partir d'un bout de texte et d'un magasin dans un domaine différent.Comment extraire la date qui est au format '29 mai 2002' [mm jj aaaa] en Python

Par exemple:

Vieux:

id  Description          
1 A man died on March 22 2002 in an accident..(continues). 
2 An employee died while operating lift on May 13 2001..(continues) 

Nouveau:

id  Date 
1  22-03-2002 
2  13-05-2001 

j'ai essayé différentes options en python avec pandas géants, mais ne donne pas les résultats au format correct. Merci de m'aider à trouver une solution.

Merci Devi

Répondre

0

Essayez avec bibliothèque de base d'abord.

Installer: pip installer ParseDateTime

code:

import parsedatetime 
p = parsedatetime.Calendar() 
parsed_data = p.parse("A man died on March 22 2002 in an accident..(continues)") 
day = parsed_data[0].tm_mday 
month = parsed_data[0].tm_mon 
year = parsed_data[0].tm_year 

En cas de plusieurs dates je pense regex sera très utile. code:

day_pattern : r"(?P<day>(?:[12][0-9]|3[01]|0?[1-9]))(?:th|nd|rd|st)?" 
month_pattern : r"(?P<month>jan(?:uary)?|mar(?:ch)?|may|jul(?:y)?|aug(?:ust)?|oct(?:ober)?|dec(?:ember)?|sep(?:tember|t)?|apr(?:il)?|jun(?:e)?|nov(?:ember)?|feb(?:ruary)?)", 
year_pattern : r"(?P<year>(?:19|20)?\d\d)", 
mm_pattern : r"(?P<month>(?:0?[1-9]|1[012]))", 
dd_pattern : r"(?P<day>(?:[12][0-9]|3[01]|0?[1-9]))", 
yy_pattern : r"(?P<year>(?:19|20)?\d\d)", 

Vous devez vérifier la position de chaque match et en fonction de ceux que vous pouvez décider des dates multiples.

+0

..thank beaucoup pour la réponse ..just doute faut-il identifier si deux dates sont donné dans le texte? Je trouve qu'il ne prend que la dernière date –

+0

Mis à jour la réponse. Regex vous donnera de meilleurs matchs. –