如何将零加一位数字(时间)?

时间:2019-10-14 15:27:01

标签: python string list

我有一个用冒号分隔的数字列表。如果数字为单,我需要添加零。 例如nums = ["10:30", "9:30", "11:0"]

我已经看到一些推荐使用zfill()的建议,但是我不确定如何使用它。

我需要什么: nums = ["10:30", "09:30", "11:00"]

6 个答案:

答案 0 :(得分:2)

您可能需要仔细考虑一下,因为就像在建议11:3中提到的可能是11:03或11:30,但无论如何,使用python中的实际日期时间,您可以执行以下操作:

from datetime import datetime
nums = ["10:30", "9:30", "11:3"]
x = [datetime.strptime(x, '%H:%M').strftime('%H:%M') for x in nums]

>>> x
['10:30', '09:30', '11:03']

答案 1 :(得分:1)

这是一种使用字符串格式的方法:

def add_zeros(item: str) -> str:
    nums = item.split(":")
    formatted_item = ":".join(f"{int(num):02d}" for num in nums)
    return formatted_item

然后将其应用于列表中的每个项目:

nums = ["10:30", "9:30", "11:0"]
[add_zeros(num) for num in nums]

答案 2 :(得分:1)

您可以使用string formatting将零填充到字符串,例如向左滑动:

>>> nums = ['10:30', '9:30', '11:0']
>>> ['{:0>2}:{:0>2}'.format(*n.split(':')) for n in nums]
['10:30', '09:30', '11:00']

或者,将字符串转换为数字:

>>> ['{:02d}:{:02d}'.format(*map(int, n.split(':'))) for n in nums]
['10:30', '09:30', '11:00']

答案 3 :(得分:1)

这是利用zfillljust

的解决方案
nums = ["10:30", "9:30", "11:0"]

fixed = []
for t in nums:
    x, y = t.split(':')
    fixed.append(x.zfill(2) + ':' + y.ljust(2, '0'))

print(fixed)

答案 4 :(得分:1)

  

如果数字是单个,我需要加零

使用列表理解

nums = ["10:30", "9:30", "11:0"]

nums_added = [ i + "0" if len(i.split(":")[1]) == 1 else i for i in nums]

print(nums_added)

输出:

['10:30', '9:30', '11:00']

答案 5 :(得分:1)

一种解决方案,因为这些解决方案看起来像日期很多,可能是...

设置您的列表

nums = ["10:30", "9:30", "11:0"]

遍历列表转换,抓紧时间并放弃最后3个字符(技术术语)

for item in nums:
    print(str(datetime.strptime(item, '%H:%M').time())[:-3])

打印输出

10:30
09:30
11:00