2016-07-10 1 views
2

Zum Beispiel habe ich eine Zeichenfolge "etwas bis morgen 9 Uhr tun". Ich benutze das parsedatetime Modul, um die Zeichenkette zu analysieren und ein Datetime-Objekt von ihm zu erhalten. Ich tat dies nach der ParseDateTime Dokumentation:Wie entferne ich den Datetime-Teil einer Zeichenkette?

from datetime import datetime 
import parsedatetime as pdt # $ pip install parsedatetime 

cal = pdt.Calendar() 
string = "do something by tomorrow 9am" 
time_struct = cal.parse(string) 
datetimeobject = datetime(*time_struct[0][:6]) 

Allerdings mag ich wissen, welchen Teil der Zeichenkette, die es analysiert, um das Datetime-Objekt zu bekommen, weil ich auch, möchte das Datum Teil aus der Zeichenfolge entfernen, zu erhalten "etwas tun". Python-Dateutil-Modul scheint das zu tun, aber es analysiert keine Daten wie "morgen" oder "2 Stunden später".

Gibt es eine Möglichkeit, das zu tun? Das eingegebene Datum kann in vielen Formaten vorkommen.

Antwort

1

Mit einem kurzen Blick auf die doc (https://bear.im/code/parsedatetime/docs/index.html) Sie sehen:

nlp(self, inputString, sourceTime=None) 

Wenn Sie es mit Ihrem Eintrag verwenden:

cal.nlp(string) 

Sie finden:

((datetime.datetime(2016, 7, 11, 9, 0), 3, 16, 28, 'tomorrow 9am'),) 

Vielleicht wird es Ihnen helfen, den geparsten Teil der Zeichenfolge in Ihrer eigenen Zeichenfolge zu finden, und Sie werden in der Lage sein, die angemessene Mani zu tun pulation, um zu erhalten, was Sie brauchen.

+0

Schön, das ist eigentlich eine gute Lösung. Von dort einfach string.find (cal.nlp (string) [0] [- 1]) – Ohumeronen