[英]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.