2017-03-08 3 views
0
import parsedatetime as pdt 

c = pdt.Constants() 
p = pdt.Calendar(c) 
p.parseDateText('28 Feb 17') #Current date at runtime is Mar 7 2017 

RETURNS vorkommen:ParseDateTime kehrt falsch Jahr für Daten früher als aktuelle Monat

(2018, 2, 17, 21, 51, 22, 1, 66, 0) 

So baute ich einen webscraper gehen Kalenderereignisse auf mehrere Websites von Interesse geschrieben und sie haben ihre Daten bekommen verschiedene Nicht-Standard-Formate. Ich benutze parsedatetime, um die freien Textdaten in etwas verwendbares in einen Kalender umzuwandeln. Das Problem, das mir gerade klar geworden ist, ist für Ereignisse, die ich bereits gemacht habe. Ich beschränkte das Problem auf den Anfang, wenn der Monat des zu analysierenden Datums mindestens einen Monat vor dem aktuellen Datum liegt, wie oben im Code gezeigt.

Was kann ich tun, um entweder richtig diese Daten zu analysieren (sie nicht alle im Format wie oben dargestellt) oder auf andere Weise zu fangen, so dass sie nicht bekommen, fälschlicherweise zu meinem Google Kalender hinzugefügt?

+0

Wenn das Ergebnis Sie wollen, '(28, 2, 2017)' Sie müssen explizit Jahr wo sagen, Monat, Tag ist der Datetime-Parser. Sie können dafür [datetime.strptime] (https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior) (String-Parserzeit) verwenden. Wenn es etwas anderes ist, was falsch ist, konnte ich es nicht klar verstehen. – umutto

Antwort

1

Ich würde recommmend die dateparser Bibliothek:

$ pip install dateparser 

Beispiel:

>>> import dateparser 
>>> dateparser.parse('28 Feb 17') 
datetime.datetime(2017, 2, 28, 0, 0)