Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python从具有特定关键字的文本文件中提取开始日期和结束日期_Python_Date_Extract - Fatal编程技术网

如何使用python从具有特定关键字的文本文件中提取开始日期和结束日期

如何使用python从具有特定关键字的文本文件中提取开始日期和结束日期,python,date,extract,Python,Date,Extract,这是一个示例文本: Jan 1 11:22:33 DHCPDISCOVER from 00:11:22:33:44:55 Jan 1 11:22:34 DHCPOFFER on 10.0.0.5 to 00:11:22:33:44:55 Jan 1 11:22:35 DHCPREQUEST for 10.0.0.5 from 00:11:22:33:44:55 Jan 1 11:22:36 DHCPACK on 10.0.0.5 to 00:11:22:33:44:55 Jan 1 11:22:

这是一个示例文本:

Jan 1 11:22:33 DHCPDISCOVER from 00:11:22:33:44:55
Jan 1 11:22:34 DHCPOFFER on 10.0.0.5 to 00:11:22:33:44:55
Jan 1 11:22:35 DHCPREQUEST for 10.0.0.5 from 00:11:22:33:44:55
Jan 1 11:22:36 DHCPACK on 10.0.0.5 to 00:11:22:33:44:55
Jan 1 11:22:37 DHCPNACK on 10.0.0.5 to 00:11:22:33:44:55
我想提取特定的mac地址,当它第一次注册日期和时间时,以及最后一次注册时

输出必须如下所示:

for the given mac address: 00:11:22:33:44:55
Start: Jan 1 11:22:33
End: Jan 2 22:33:44
mac_dict = {}
for line in in_file:
    words = line.split(' ')
    if words[3] == 'DHCPACK':
        mac = words[-1]
        datetime = ' '.join(words[:3])
        if not mac in mac_dict:
            mac_dict[mac] = {'first_date':datetime, 'last_date': None}
        else:
            mac_dict[mac]['last_date'] = datetime

for mac in mac_dict:
    print("for the given mac address: {}\nStart:{m[first_date]}\nEnd:{m[last_date]}".format(mac, m=mac_dict[mac]))
问题:我想。。。对于雨衣。。。第一次注册。。。最后。。。注册的

你想要这样的东西:

for the given mac address: 00:11:22:33:44:55
Start: Jan 1 11:22:33
End: Jan 2 22:33:44
mac_dict = {}
for line in in_file:
    words = line.split(' ')
    if words[3] == 'DHCPACK':
        mac = words[-1]
        datetime = ' '.join(words[:3])
        if not mac in mac_dict:
            mac_dict[mac] = {'first_date':datetime, 'last_date': None}
        else:
            mac_dict[mac]['last_date'] = datetime

for mac in mac_dict:
    print("for the given mac address: {}\nStart:{m[first_date]}\nEnd:{m[last_date]}".format(mac, m=mac_dict[mac]))

请与我们分享您的尝试?否则我们会认为你想让我们帮你做家务你的时间戳不包括一年?这很奇怪。使用
re.match
解析每一行,
time.strtime
将时间戳部分转换为日期时间,MAC地址作为dict密钥,并保留每个dict条目的最大/最小日期时间。包括测试在内大约需要四分钟。很抱歉还没有发布任何内容@Moinuddin。我还不知道怎么做。谢谢你为我指明了正确的方向。现在我可以用re.findall了。所以我想我可以从这个开始找到它:date=re.findall('\w{3}\b\d{1}\b\d{2}:\d{2}:\d{2}',line)类似的东西,没有测试过。HughBothwell我把它翻译成pyhton格式,但没有用元组转换成pyhton格式。你能告诉我为什么这不起作用吗:
date=re.findall(r'\w{3}\s\d{1,2}\s\d{2}:\d{2}:\d{2},line)
日期=元组(日期)
start=min(日期)
end=max(日期)