我想将一个字符串转换为分钟,然后将其全部添加并将其作为字符串返回,我在执行此操作时遇到了困难。
我有一个包含此列表的列表:
TimeL = ['02:32','03:43','01:05','56:03']
我想将这些分钟:秒组合在一起并返回一个值为格式小时的总数:mm:ss但是如果它们的值不足以制作一小时,我只想返回一个值为mm:ss 。
到目前为止,我能做的就是将每个东西转换为秒并添加它们,但这不是我想要的,它只是我知道该怎么做。
def getTIME(s):
l = s.split(":")
return int(l[0])*(60) + int(l[1])
for i in range(len(TimeL)):
NEW = getTIME(TimeL[i])
NewTotalTime = NewTotalTime + NEW
所以我的方法将返回一个只有秒的值..所以就像3432秒。我希望它是几小时:分钟:秒,我卡住了。任何人都可以帮助甚至一点点,非常感谢你!
答案 0 :(得分:1)
使用以下内容:
str(datetime.timedelta(seconds=3432))
您需要为此导入datetime
模块。您已经有秒数,这会将其转换为包含小时,分钟和秒的字符串。
答案 1 :(得分:1)
这就是你想要的。 1分= 60秒,所以你将秒除以60.你的问题是你需要在python中除以60.0,这样你才能得到确切的值(浮点值)。完成此操作后,您将获得最小的整数值(math.floor
),例如150秒是2.5分钟,所以你需要2分钟,2分钟是120秒,你从150中删除你得到30分。这是剩余的秒数。您在数小时(60分钟)内应用相同的推理
import sys
import math
def getSeconds(s):
l = s.split(":")
return int(l[0])*(60) + int(l[1])
def getTotalString(time_list):
total_secs = 0
for time_str in time_list:
total_secs += getSeconds(time_str)
total_mins = total_secs/60.0
mins = math.floor(total_mins)
secs = total_secs-mins*60
if mins<60:
return '%.2d:%.2d' % (mins, secs)
else:
hours = math.floor(mins/60.0)
mins = mins-60*hours
return '%.2d:%.2d:%.2d' % (hours, mins, secs)
if __name__ == '__main__':
print getTotalString(sys.argv[1:])
计算秒总和的方法可以在Python中用一行完成:
total_secs = sum(getSeconds(time_str) for time_str in time_list)
sum
将计算列表(或迭代器)中数字的总和。您可以为其提供一个数字列表或要添加的数字生成器the number of seconds in each time string in the list
我希望尽可能清晰明了,但你可以使用更简单的datetime模块解决方案。
UPDATE:这是Python 2.x而不是Python 3.所以它可能无法正常工作,但想法是一样的,语法不同。