zfill
必要に応じてこれらのゼロを追加するために使用します。
hours = [time.strptime(i[:-1].zfill(4), "%H%M") for i in a]
を使用i[:-1]
することで、厄介な末尾のドットを削除し、左側に.zfill(4)
十分な文字を追加0
して 4 桁にします。
デモ:
>>> import time
>>> a = ['800.', '830.', '900.', '30.']
>>> [time.strptime(i[:-1].zfill(4), "%H%M") for i in a]
[time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1), time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=30, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1), time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=9, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1), time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=30, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)]
代わりに float 値の場合は、それらのformat()
関数を使用して、ゼロで埋められた値を取得します。
>>> format(800., '04.0f')
'0800'
だからこれをしてください:
hours = [time.strptime(format(i % 2400, '04.0f'), "%H%M") for i in a]
ここで% 2400
、値を 0 から 2399 の範囲に正規化します。