Ich kann Zeichenfolgen mit Datum / Uhrzeit mit time.strptime analysieren
>>> import time
>>> time.strptime('30/03/09 16:31:32', '%d/%m/%y %H:%M:%S')
(2009, 3, 30, 16, 31, 32, 0, 89, -1)
Wie kann ich eine Zeitzeichenfolge analysieren, die Millisekunden enthält?
>>> time.strptime('30/03/09 16:31:32.123', '%d/%m/%y %H:%M:%S')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/_strptime.py", line 333, in strptime
data_string[found.end():])
ValueError: unconverted data remains: .123
python
date
time
datetime-parsing
ilkinulas
quelle
quelle
%f
.%f
wird rechts (nicht links!) Mit Nullen auf 6 Dezimalstellen aufgefüllt . 1 wird auf 100000 analysiert, 12 wird auf 120000 analysiert und 1234567 produziertValueError: unconverted data remains: 7
Ich weiß, dass dies eine ältere Frage ist, aber ich verwende immer noch Python 2.4.3 und musste einen besseren Weg finden, um die Datenzeichenfolge in eine Datums- / Uhrzeitangabe zu konvertieren.
Die Lösung, wenn datetime% f nicht unterstützt und keinen Versuch / Ausnahme benötigt, lautet:
Dies funktioniert für die Eingabezeichenfolge "2010-10-06 09: 42: 52.266000".
quelle
dt.replace(microsecond=int(mSecs))
Um den Code anzugeben, auf den sich die Antwort von nstehr bezieht (aus seiner Quelle ):
quelle
Die obige DNS-Antwort ist tatsächlich falsch. Die SO fragt nach Millisekunden, aber die Antwort ist für Mikrosekunden. Leider hat Python`s keine Direktive für Millisekunden, nur Mikrosekunden (siehe Dokument ), aber Sie können dies umgehen, indem Sie drei Nullen am Ende der Zeichenfolge anhängen und die Zeichenfolge als Mikrosekunden analysieren.
wo
time_str
ist formatiert wie30/03/09 16:31:32.123
.Hoffe das hilft.
quelle
.123
korrekt als 123.000 Mikrosekunden interpretiertMein erster Gedanke war, es '30 / 03/09 16: 31: 32.123 'zu übergeben (mit einem Punkt anstelle eines Doppelpunkts zwischen den Sekunden und den Millisekunden). Aber das hat nicht funktioniert. Ein kurzer Blick auf die Dokumente zeigt, dass Sekundenbruchteile auf jeden Fall ignoriert werden ...
Ah, Versionsunterschiede. Dies wurde als Fehler gemeldet und jetzt in Version 2.6+ können Sie "% S.% f" verwenden, um es zu analysieren.
quelle
aus Python-Mailinglisten: Analysieren des Millisekunden-Threads . Dort gibt es eine Funktion, die den Job zu erledigen scheint, obwohl es, wie in den Kommentaren des Autors erwähnt, eine Art Hack ist. Es verwendet reguläre Ausdrücke, um die Ausnahme zu behandeln, die ausgelöst wird, und führt dann einige Berechnungen durch.
Sie können auch versuchen, die regulären Ausdrücke und Berechnungen im Voraus durchzuführen, bevor Sie sie an strptime übergeben.
quelle
Für Python 2 habe ich das gemacht
Es gibt die Zeit "% H:% M:% S" aus, teilt die time.time () in zwei Teilzeichenfolgen (vor und nach der.) xxxxxxx.xx auf und da .xx meine Millisekunden sind, füge ich die zweite Teilzeichenfolge zu meiner "%" hinzu. H:% M:% S
hoffe das macht Sinn :) Beispielausgabe:
13: 31: 21.81 ENDE DES BLINKS 01
13: 31: 26.3 Blink 01
13: 31: 26.39 ENDE DES BLINKS 01
13: 31: 34.65 Startspur 01
quelle