Python:从日志中提取两行之间的时间戳
我刚开始学习Python,想写一个脚本来提取日志中几行的时间戳。
这些日志大概是这样的。
-----------------------------------------------
138976 2013-12-17 18:25:58.607 superman(759) Debug: {event} TUNE: IR Signal Received: Key Code: 104
138977 2013-12-17 18:25:58.616 mediamanager(763) Debug: {event} TUNE: Player Close Issued
138999 2013-12-17 18:25:58.683 mediamanager(763) Debug: {event} TUNE: Player Open Issued: atsc://fr783000000.256.10
139003 2013-12-17 18:25:58.688 mediamanager(763) Debug: {event} TUNE: Streamer Opened: atsc://fr783000000.256.10 SessionId=152 ProcessID=856
139014 2013-12-17 18:25:58.695 halserver(628) Debug: {event} TUNE: Frontend Locked: Tuner: 1
139030 2013-12-17 18:25:58.735 mediamanager(763) Debug: {event} TUNE: Player Play Issued: SessionId: 152
139133 2013-12-17 18:25:59.705 httpmediaserver(824) Debug: {event} TUNE: HTTP Request Received: HEAD /mediasession?producer_id=8&type=tune_live HTTP/1.1
139134 2013-12-17 18:25:59.757 halserver(628) Debug: {event} TUNE: New Picture Received
139136 2013-12-17 18:25:59.757 halserver(628) Debug: {event} TUNE: Video Is Visible
---------------------------------------
基本上,中间还有一些不需要的行。有些行出现的顺序也不固定,我想要做的是在调音事件出现时提取相关数据。
有没有人能给我一些建议呢?
提前谢谢大家 :-)
1 个回答
4
我还是不太明白你在问什么。你是想要把两个事件之间的时间戳收集到一个列表里,还是想根据日志文件来找出这两个事件之间的时间呢?
import re
with open('my_log.txt') as my_log:
a = [re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}',
line)[0] for line in my_log.readlines() if 'TUNE:' in line]
print a
如果你想要把时间戳放在一个列表里,输出结果是:
['2013-12-17 18:25:58.607', '2013-12-17 18:25:58.616',
'2013-12-17 18:25:58.683', '2013-12-17 18:25:58.688',
'2013-12-17 18:25:58.695', '2013-12-17 18:25:58.735',
'2013-12-17 18:25:59.705', '2013-12-17 18:25:59.757',
'2013-12-17 18:25:59.757']
如果你想知道第一个事件和最后一个事件之间的时间差,输出结果是:
from dateutil import parser
t_delta = parser.parse(a[-1]) - parser.parse(a[0])
print t_delta #0:00:01.150000