您可以使用divisions和module将数字分成100个块,然后在转换为带前导零的字符串后,使用“:”连接部分:
num = 132
result = ":".join( f"{num//10**i%100:02}" for i in (4,2,0) )
print(result) # '00:01:32'
-
格式字符串,例如
f"{n:02}"
获取变量的值
n
并使其成为一个带前导零的2个位置的字符串。(即1-->'01')
-
":".join(...)
获取字符串列表并将它们连接到一个字符串中,在列表中的每个项之间放置“:”
-
( ... for i in (4,2,0) )
是一个列表理解。它根据i的值生成一个3项列表,每个项的值分别为4、2和0。
-
num//10**i
是num除以10的整数除以i的幂。在列表理解(i将是4、2和0)中,这将产生num//10000、num//100和num//1。结果:0、1和132
-
%100
是模100。只取上面计算数的最后两位:0%100->0,1%100->1,132%100-->32
所有这些加起来产生格式化的时间
另一种方法(可能适用于较旧版本的python)是:
result = ":".join(str(10000+num)[-i:][:2] for i in (6,4,2))
如果不需要秒,可以在第一个示例中将元组更改为(2,0),在第二个示例中将元组更改为(4,2)。或者简单地使用:
result = f"{num//100%100:02}:{num%100:02}"