Ich kratzte etwas und hatte Probleme, die verstrichene Zeit zu verarbeiten, also machte ich mir eine Notiz. Kennen Sie die Notation einer solchen Stoppuhr? "X'yy" z "bedeutet" x Minuten yy.z Sekunden ". Dieses Mal möchte ich diese Zeichenfolge (Typ str) mit Python in Sekunden (Typ float) konvertieren. Zum Beispiel Die Konvertierung ist "1'45" 5 "-> 105,5 Sekunden.
Im Programm wird der Zeichenkettentyp von Python durch "hoge" oder "hoge" beschrieben, aber diesmal ist die Notation "x'yy" z "", "" in der Zeichenkette. Wird mit inbegriffen sein. In einem solchen Fall wird die Python-Zeichenfolge mit "" behandelt, und die Notation lautet "x " yy "z". Wenn dies mit strptime zu einem datetime-Typ gemacht wird, ist dies wie folgt.
from datetime import datetime
# %M ist Minuten,%S ist Sekunden,%f ist Mikrosekunden
strtime = '1\'45"5' #String
t = datetime.strptime(strtime, '%M\'%S"%f')
print('t:', t)
print('type:', type(t))
# Output
# t: 1900-01-01 00:01:45.500000
# type: <class 'datetime.datetime'>
Da datetime ein Datumstyp ist, beträgt er allein am 1. Januar 1900 0: 01: 45: 500.000 Mikrosekunden. Dieses Mal möchte ich es als "Zeit" anstelle von Datum behandeln, daher reicht dies nicht aus. Daher wird es in den Timedelta-Typ konvertiert.
timedelta steht für "Zeit" anstelle von "Datum", da es zum Addieren und Subtrahieren von Datum und Uhrzeit verwendet wird. Da es jedoch nicht möglich ist, direkt aus der Zeichenfolge zu konvertieren, wird der Datum / Uhrzeit-Typ zurückgegeben. Die Konvertierung vom Datum / Uhrzeit-Typ zum Zeit-Delta-Typ erfolgt wie folgt.
from datetime import timedelta
t_delta = timedelta(
seconds=t.second, #datetime Typ t Sekunden werden gespeichert
microseconds=t.microsecond, #Datetime Typ t Mikrosekunden werden gespeichert
minutes=t.minute, #Datetime Typ t Minuten werden gespeichert
)
print('t_delta:', t_delta)
print('type:', type(t_delta))
# Output
# t_delta: 0:01:45.500000
# type: <class 'datetime.timedelta'>
Sie können sehen, dass es sich beim Timedelta-Typ nicht um ein Datum handelt, sondern um 1 Minute 45 Sekunden 5 als Uhrzeit. Schließlich wird 1 Minute 45 Sekunden 5 nur in Sekunden umgewandelt. Natürlich können Sie die Programmierung manuell schreiben, aber timedelta hat eine Methode namens "total_seconds ()", die auf einmal in Sekunden umgewandelt werden kann!
tdl2sec = t_delta.total_seconds()
print(tdl2sec)
print(type(tdl2sec))
#Output
# 105.5
# <class 'float'>
Ein glückliches Ziel erreicht! !!
Recommended Posts