【问题标题】:Python - Append a list with a line from a text file if there's a regex match in the text filePython - 如果文本文件中存在正则表达式匹配,则在文本文件中附加一行列表
【发布时间】:2020-06-23 18:49:45
【问题描述】:

我需要解析系统日志并附加一个列表,其中包含与正则表达式匹配的任何行。 这是我要附加到列表的行的示例:

Jan 31 00:44:34 ubuntu.local ticky: ERROR Permission denied while closing ticket (ac)

这是我尝试过的:

list1 = []

with open("syslog.txt", "r") as log:
  regex = r"ticky:.*ERROR.*"
  for i in log:
    if re.search(regex, str(log)):
      list1.append(i)

我已经尝试了自己的正则表达式,首先将 i 中的所有结果添加到字符串变量,然后在该变量上使用正则表达式。它能够找到匹配项,因此正则表达式本身不是问题。

这是一个练习,所以这只是第一步,必须使用正则表达式完成,因为在这一步之后,我必须扩展此代码以包含不同类型的消息。

我一生都无法弄清楚为什么它不起作用。 非常感谢任何帮助。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    乍一看,您似乎在整个日志列表中执行re.search。我建议尝试:

    list1 = []
    
    with open("syslog.txt", "r") as log:
      regex = r"ticky:.*ERROR.*"
      for i in log:
        if re.search(regex, str(i)):
          list1.append(i)
    

    【讨论】:

    • 我真是个白痴哈哈。这很有意义!不敢相信我已经在这里坐了 3 个小时,却没有看到。非常感谢!
    • Youre welcomed. Dont 担心,我们都曾在某个时候犯过这种错误哈哈
    【解决方案2】:

    这里是你如何使用正则表达式:

    import re
    
    list1 = []
    
    with open("syslog.txt", "r") as log:
      for i in log:
        if re.findall("ticky:*.ERROR.*", i):
          list1.append(i)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多