在python中从文件中搜索和打印正则表达式

2024-05-19 12:02:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中使用以下代码来搜索文件中的正则表达式,但它始终返回“None”。不明白是怎么回事。 (编辑-添加完整代码)

def process_syslog(file_path):
    with open(file_path, "r") as f:

        for line in f:
           link_down_match = re.search(r'Link Down on en0. (.*$)', line)
           print en0_down_match.group()

链接到匹配项,总是打印“无”。我正在为以下行重新匹配:

要匹配的字符串:en0上的向下链接。原因1(未指明)。你知道吗

基本上,我正在搜索的文件包含上面提到的多行,其中“Reason”在某些情况下是不同的(1-10)

这就是我从main(snippet)调用函数的方式

if current_file == 'syslog':
                curr_file_path = dir_path + str(current_file)
                process_syslog(curr_file_path)

这里怎么了?你知道吗

我正在处理的文件片段:

Mar 25 06:33:34 ethernet: Status: Link Down on en0. Reason 1 (Unspecified).
Mar 25 06:34:07 ethernet: Status: Link Down on en1. Reason 4 (Unspecified).
Mar 25 06:43:06 ethernet: Status: Link Down on en1. Reason 4 (Unspecified).
Mar 25 06:44:16 ethernet: Status: Link Down on en1. Reason 4 (Unspecified).
Mar 25 06:53:59 ethernet: Status: Link Down on en0. Reason 1 (Unspecified).
Mar 25 06:53:59 ethernet: Status: Link Down on en1. Reason 8 (Unspecified.
Mar 25 16:17:36 ethernet: Status: Link Down on en0. Reason 1 (Unspecified).

Tags: 文件path代码onstatuslinkmarfile
3条回答

更新的答案删除旧内容:

import re

def process_syslog(file_path):
    with open(file_path, "r") as f:
        for line in f:
            link_down_match = re.search(r'Link Down on en0. (\w+) (\d+)', line)
            if link_down_match == None:
                continue
            print link_down_match.group()

def main():
    process_syslog("syslog.txt")

if __name__ == '__main__':
    main()

电流输出:

Link Down on en0. Reason 1

Link Down on en0. Reason 1

Link Down on en0. Reason 1

group()更改为groups()

print link_down_match.groups()

或者

print link_down_match.group(1)
print link_down_match.group(2)
print link_down_match.group(n)

有几件事。你知道吗

  • 虽然你没有提到它,我想你在for循环之前有一个'with open…'语句?

  • 你确定在(\w+)和(\d+)前面有一个空格吗?

  • 您使用示例中的颜色打印了示例文本。我想这是Stackoverflow的东西吧?否则日志中可能会有转义序列。

我在你的例子上测试了r.e.,它在这里运行正常,所以检查上面的。。。你知道吗

相关问题 更多 >

    热门问题