社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何在python中及时转换132这样的数字?

OneChannelEverything • 5 年前 • 1513 次点击  

我想把1134这样的数字转换成11:34这样的时间。我看到了其他答案,但我的问题不同。

我正在从语音识别中获取输入,所以如果我说一三五。输入将保存为135。

主要问题是输入的长度可以是15(2位)。请帮帮我。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/48147
 
1513 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Alain T.
Reply   •   1 楼
Alain T.    5 年前

您可以使用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}"

goodvibration
Reply   •   2 楼
goodvibration    5 年前

主要问题是输入的长度可以是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)