我正在尝试使用以下代码行以秒为单位转换数据:“ 1天,01:00:00”:
import datetime
time_1 = '1 day, 01:00:00'
h, m, s = str(time_1).split(':')
seconds = (int(datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s)).total_seconds()))
print(seconds)
但是我得到了这个错误:
>>> ValueError: invalid literal for int() with base 10: '1 day, 01'
我可以从变量“ time_1”中删除“ 1 day”,但不包括天数。
有人可以帮助我吗?
答案 0 :(得分:1)
在用“:”分割之前,您需要先用逗号分割并加上结尾部分,
如果您不这样做,那么h
将设置为"1 day, 01"
time_aux = time_1.split(',')[1]
h, m, s = time_aux.split(':')
答案 1 :(得分:0)
使用split分割您的初始字符串
result = [x.strip() for x in time.split(',')]
然后将第一项和第一个字符乘以64200,将其转换为秒,然后像您一样转换小时,分钟和秒。
seconds = (int(datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s)).total_seconds()))
total_seconds = int(result[0][1])*64200 + seconds
答案 2 :(得分:0)
您可以使用re
解析时间字符串:
import datetime
import re
time_1 = '1 day, 01:00:00'
for (days, t) in re.findall(r'(?:(\d+)\s+days?)?,?\s*([\d:]+)', time_1):
h, m, s = str(t).split(':')
seconds = datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s)).total_seconds()
if days:
seconds = seconds + datetime.timedelta(days=int(days)).total_seconds()
print(int(seconds))
打印:
90000