过滤多个文本模式并存储它们和它们各自的出现

2024-04-25 03:42:55 发布

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

我对python和stackoverflow本身都是新手,这是我在这里的第一篇文章。你知道吗

我正在处理一个如下所示的日志文件:

2月1日00:00:02网桥内核:入站TCP:IN=br0 PHYSIN=eth0 OUT=br0 PHYSOUT=eth1 SRC=三十、 XXX.XXX.XXX夏令时=三十、 XXX.XXX.XXX LEN=40 TOS=0x00 PREC=0x00 TTL=110 ID=12973 PROTO=TCP SPT=220 DPT=6129 WINDOW=16384 RES=0x00 SYN URGP=0

我需要搜索冒号之间的所有东西。在这一行中,匹配的模式将是入站TCP,但还有其他类型的模式。你知道吗

我必须搜索该字段,存储所有唯一类型以及它们在文件中出现的次数。你知道吗

我已经知道如何打开文件并使用重新编译我设法将唯一的结果保存在另一个文本文件中。你知道吗

在阅读文档时,我想我需要使用一个带有某种循环的字典来存储不同的模式及其出现次数。你知道吗

有人能帮我吗?你知道吗

如果你读到这里,谢谢你。你知道吗

#!/usr/bin/python3
import sys
import os
import re

p= re.compile ('bridge kernel:.*:')
    with open (sys.argv[1], "r") as f:
        with open ('tipos.txt',"w" ) as f2:
            for line in f:
                if p.search(line):
                   f2.write(line.split(":")[3] + '\n')

os.system('sort tipos.txt|uniq > tipos2.txt')
dict={}
with open (sys.argv[1],"r") as log:
with open ('tipos2.txt','r') as f:
for l in f:
if f in log:
dict={"(f.line)", "(len(log))"}
    print (dict)

Tags: 文件inimporttxtlogaswithsys
1条回答
网友
1楼 · 发布于 2024-04-25 03:42:55

首先,您不应该调用字典^{},因为它已经是python(The dict() constructor builds dictionaries directly from sequences of key-value pairs)中的一个现有关键字。你知道吗

这行dict={"(f.line)", "(len(log))"}是不正确的,像这样使用的花括号意味着您实际上是在定义一个包含两个字符串的新的^{},而不是您想要的变量-它们在引号中。你知道吗

空字典本身的声明是好的。 要向现有字典添加值,请使用dictName[key] = value。要用值对声明字典,请使用dictName = {key1 : value1, key2 : value2}

相关问题 更多 >