我有一个用冒号分隔的数字列表。如果数字为单,我需要添加零。
例如nums = ["10:30", "9:30", "11:0"]
我已经看到一些推荐使用zfill()
的建议,但是我不确定如何使用它。
我需要什么:
nums = ["10:30", "09:30", "11:00"]
答案 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)
这是利用zfill
和ljust
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