簡體   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