124 votes

Extraction de la date d'une chaîne en Python

Comment extraire la date d'une chaîne comme "Monkey 2010-07-10 Love Banana" ? Merci !

197voto

unutbu Points 222216

Utilisation de 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)

Les dates invalides génèrent un ValueError :

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

Il peut reconnaître des dates dans de nombreux formats :

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

Notez que cela permet de deviner si la date est ambiguë :

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

Mais la façon dont il analyse les dates ambiguës est personnalisable :

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

120voto

lunaryorn Points 13621

Si la date est donnée sous une forme fixe, vous pouvez simplement utiliser une expression régulière pour extraire la date et "datetime.datetime.strptime" pour analyser la date :

import re
from datetime import datetime

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

Sinon, si la date est donnée sous une forme arbitraire, vous ne pouvez pas l'extraire facilement.

1voto

adbar Points 63

Vous pouvez également essayer le module Dateparser, qui peut être plus lent que le détecteur de date sur le texte libre, mais qui devrait couvrir plus de cas potentiels et de formats de date, ainsi qu'un nombre important de langues.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X