我想将数字1134转换为时间11:34。我看到了其他答案,但是我的问题有所不同。
我正在从语音识别中获取输入,因此,如果我说三十五点。输入将保存为135。
主要问题是输入的长度可以是15(2位)。请帮助我。
答案 0 :(得分:0)
您可以使用除法和模块将数字分成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的值(分别为4、2和0)生成一个3项列表,其中每个项。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}"
答案 1 :(得分:0)
主要问题是输入的长度可以是15(2位)。
我想,如果所有的4位数字都始终存在,那不是问题,对吧?
因此,给定数字x
,请执行以下操作:
y = '{:04d}'.format(x)
z = y[:2]+':'+y[2:]
print(z)
或者,您可以执行以下操作:
y = '{:02d}:{:02d}'.format(x//100,x%100)
print(y)