你可能沒有注意到,在數據列表項的格式不一致。例如,在日期和2015.12.09.19:45 123.251
中的其他數據之間存在空格,但空格在2015.12.09.20: 45123.166
中的位置不同。我會假設你會處理這個問題。
我首先創建一個類似於你的數據項的格式一致的列表。儘管大多數日期間隔十五分鐘,但我故意留下一些空白。
>>> from datetime import timedelta
>>> interval = timedelta(minutes=15)
>>> from datetime import datetime
>>> current_time = datetime(2015,12,9,19,30)
>>> data = []
>>> omits = [3,5,9,11,17]
>>> for i in range(20):
... current_time += interval
... if i in omits:
... continue
... data.append(current_time.strftime('%y.%m.%d.%H:%M')+' 123.456')
...
>>> data
['15.12.09.19:45 123.456', '15.12.09.20:00 123.456', '15.12.09.20:15 123.456', '15.12.09.20:45 123.456', '15.12.09.21:15 123.456', '15.12.09.21:30 123.456', '15.12.09.21:45 123.456', '15.12.09.22:15 123.456', '15.12.09.22:45 123.456', '15.12.09.23:00 123.456', '15.12.09.23:15 123.456', '15.12.09.23:30 123.456', '15.12.09.23:45 123.456', '15.12.10.00:15 123.456', '15.12.10.00:30 123.456']
現在我通讀日期減去每個從它的前輩。我設置了第一個'前任',我將其稱爲previous
至now
,因爲這必然與其他日期不同。
我將列表中的每個數據分成兩部分,忽略第二部分。使用strptime
我將字符串轉換爲日期。可以減去日期並比較差異。
>>> previous = datetime.now().strftime('%y.%m.%d.%H:%M')
>>> first = True
>>> for d in data:
... date_part, other = d.split(' ')
... if datetime.strptime(date_part, '%y.%m.%d.%H:%M') - datetime.strptime(previous, '%y.%m.%d.%H:%M') != interval:
... if not first:
... 'unacceptable gap prior to ', date_part
... else:
... first = False
... previous = date_part
...
('unacceptable gap prior to ', '15.12.09.20:45')
('unacceptable gap prior to ', '15.12.09.21:15')
('unacceptable gap prior to ', '15.12.09.22:15')
('unacceptable gap prior to ', '15.12.09.22:45')
('unacceptable gap prior to ', '15.12.10.00:15')
你能解釋時間戳的格式嗎? – Gribouillis