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