Ну так как мы придумав ответы здесь это «решение», которое не использует регулярные выражения:
In [3]: def weird_time_format(fmt):
...: fmt = str(fmt)
...: hours = fmt[:2].ljust(2, '0')
...: mins = fmt[2:4].ljust(2, '0')
...: secs = fmt[4:6].ljust(2, '0')
...: return ':'.join((hours, mins, secs))
...:
In [4]: weird_time_format(212812)
Out[4]: '21:28:12'
Это использует тот факт, что струнные ломтики хорошо о вне переплете индексов и возвращать пустая строка, а не бросать ошибку:
In [1]: ''[1:2]
Out[1]: ''
In [2]: ''[1:2].ljust(2, '0')
Out[2]: '00'
Вот результаты для вашего примера ввода:
In [5]: example_input = (212812, 218654, 232527, 235959, 0, 181240, 25959, 153834)
In [6]: tuple(map(weird_time_format, example_input))
Out[6]:
('21:28:12',
'21:86:54',
'23:25:27',
'23:59:59',
'00:00:00',
'18:12:40',
'25:95:90',
'15:38:34')
И так как я принес его, что d OES к 1234
:
In [7]: weird_time_format(1234)
Out[7]: '12:34:00'
ОК, я чувствовал (немного) плохо для остроумен. Если вы действительно заинтересованы в таком подходе, это будет работать лучше и больше в соответствии с выходом на другой ответ в:
In [3]: def weird_time_format(fmt):
...: fmt = str(fmt).rjust(6, '0')
...: return ':'.join((fmt[:2], fmt[2:4], fmt[4:6]))
Поскольку вы составляете (или кого-то, кого знаете), свой собственный формат сериализации времени, возможно, вы могли бы объяснить это нам, если мы хотим помочь вам десериализировать его? В какое время '1234'? –
Почему '0' становится' 00: 00: 00', но '25959' только становится' 2: 59: 59', а не '02: 59: 59'? – Nicarus