我现在在一个写着“27:32:18”的专栏里有很多次,意思是有人等了27小时32分18秒。每当我试图分析这些值时,我总是得到“ValueError:hour必须在0..23”中。
如何解析这些值或将它们转换为更标准的格式?我尝试了以下方法作为对单个值的测试:
time1 = "56:42:12"
time2 = time1.split(':')
time2 = [int(n) for n in time2]
time2.insert(0, time2[0] // 24)
time2[1] %= 24
此时,time2是一个由[2,8,42,12]组成的列表,相当于2天,8小时,42分钟和12秒。如何将其转换为Python日期时间表示形式(以天、小时、分钟和秒为单位),以允许Python对其进行解析?注意,我最终将对这些表示等待时间的时间值进行无监督聚类。
最佳答案
你没有约会,你有一段时间。这可能与日期和时间戳有关,但仅限于涉及相同的时间单位并且与时间戳类似地显示。
因此,您不能使用dateutil
来解析这些值。It is easy enough to split out and parse yourself:
hours, minutes, seconds = map(int, time1.split(':'))
然后可以使用
datetime.timedelta()
对象表示持续时间:td = datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds)
然后按天、秒和微秒跟踪增量:
>>> import datetime
>>> time1 = "56:42:12"
>>> hours, minutes, seconds = map(int, time1.split(':'))
>>> datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds)
datetime.timedelta(2, 31332)