繁体   English   中英

正则表达式在python中获取以下内容

[英]Regular expression to get the following in python

我正在解析这个文件internet.test它有多个条目,其中一些是:

Jun 15 16:26:33 dnsmasq[1979]: query[AAAA] play.google.com from 192.168.1.11
Jun 15 16:27:13 dnsmasq[1979]: forwarded play.google.com to 8.8.8.8
Jun 15 16:27:45 dnsmasq[1979]: reply play.google.com is 2404:6800:4007:810::200e

我想获取日期和时间(例如:从1 Jun 15 16:26:33行,2 Jun 15 16:27:13行和3 Jun 15 16:27:45行)并将其存储在列表(例如:日期= ['Jun 15 16:26:33','Jun 15 16:27:13','Jun 15 16:27:45'])。

我尝试从每行中提取前14个元素,如下所示,但它不起作用。

@staticmethod
def getDate():
    Dates = []
    date = ''
    with open("internet.test", "r") as file:
        for line in file:
            for i in range(15):
                date += line[i]
            Dates.append(date)
        return display(Dates)

是否可以使用正则表达式获取和存储日期和时间?

您根本不需要正则表达式,使用line[:15]可以很容易地将行削减为14个字符,并且可以通过一些列表理解将整个循环简化为1行代码:

with open("internet.test", "r") as file:
    return display([line[:15] for line in file])

或通过两个步骤使它更加明确和可读:

with open("internet.test", "r") as file:
    Dates = [line[:15] for line in file]
return display(Dates)

您可以使用^\\w{3}\\s\\d{2}\\s\\d{2}:\\d{2}:\\d{2}来匹配您的日期。 在这里直播正则表达式。

import re
dates = []
with open("internet.test","r") as content_file:
    for line in content_file:
        m = re.search('^\w{3}\s\d{2}\s\d{2}:\d{2}:\d{2}',line)
        dates.append(m.group(0))

dates = 
['Jun 15 16:26:33', 'Jun 15 16:27:13', 'Jun 15 16:27:45']
def dates_from_file(f):
    with open(f) as file:
        for l in file:
            yield l[0:16]

dates = [d for d in dates_from_file("internet.test")]
print(dates)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM