首页 > 解决方案 > 在 python 3 regex 中打印有效日志文件条目的列表

问题描述

我是python新手。我想打开一个文件 logs.txt 并匹配每一行(日志条目)中的所有 IP 地址。

然后我会打印带有 IP 地址的日志条目的数量/计数。到目前为止我所拥有的:

import re
#read the file
file = open("logile.txt")
lineList = []
for line in file:
    match = re.search( r'^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}', line )
    if match:
        print("IP found in this line is:  ", match.group())

现在我想用这个 IP 地址打印日志条目的数量。如何将带有 IP 的每一行附加到我的 lineList 并打印计数?

标签: regexpython-3.xlistiterationmatch

解决方案


import re
file = open("logfile.txt")
lineList = []
count = 0
for ln, line in enumerate(file):
    match = re.search( r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b', line )
    if match:
        count += 1
        print("Match #{}: IP found in line {} is: {}".format(count, ln+1, match.group()))
        lineList.append(match.group())

请注意正则表达式中的附加反斜杠和单词边界锚点,以防止错误匹配。此外,由于^锚点,正则表达式只会匹配行首的 IP 地址。


推荐阅读