首页 > 解决方案 > 在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

我想获取日期和时间(例如:从 2015 年 6 月 1 日 16:26:33 开始,从 15 年 6 月 2 日 16:27:13 和 15 年 6 月 3 日 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)

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

标签: pythonregexfileparsing

解决方案


您根本不需要正则表达式,将行剪切为 14 个字符很容易,line[:15]并且您的整个循环可以通过一些列表理解简化为 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)

推荐阅读