Как добавить ноль в однозначное число (время)? - PullRequest
0 голосов
/ 14 октября 2019

У меня есть список с числами, разделенными двоеточиями. Мне нужно добавить ноль, если число одно. Например, nums = ["10:30", "9:30", "11:0"]

Я видел некоторые рекомендации по использованию zfill(), но я не уверен, как его использовать.

Что мне нужно: nums = ["10:30", "09:30", "11:00"]

Ответы [ 6 ]

2 голосов
/ 14 октября 2019

Вам, вероятно, нужно немного обдумать это, потому что, как упоминалось в комментариях 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 голос
/ 14 октября 2019

Решение, основанное на том факте, что эти много подобные даты могут быть ...

Настройте свой список

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
1 голос
/ 14 октября 2019

Мне нужно добавить ноль, если число одиночное

Использование понимания списка

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']
1 голос
/ 14 октября 2019

Вот решение, использующее 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)
1 голос
/ 14 октября 2019

Вы можете использовать форматирование строки для дополнения нулями строк, например, для заполнения слева:

>>> 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']
1 голос
/ 14 октября 2019

Вот способ использования строкового форматирования:

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...