如何匹配列表项并进行组合

问题描述 投票:1回答:1

我的列表包含以下内容:[源,目的地,时间,数据包大小]

[''10.247.15.39','172.217.2.161','13:25:31','46','10 .247.15.39','172.217.2.163','13:25:31','46' ]像这样

我想获得的输出

Desired Output:
Source: 151.101.125.140     dest: 10.247.15.39  start:13:25:31 
stop:13:25:35 package amount:5  total length: 1965482

在列表中,有几个数据包具有相同的源和目的地,因此我需要根据查找开始和结束时间以及总数据包大小和数据包数量来查找所有数据包。

但是我不知道如何组合两个索引并进行匹配,然后根据顺序获得值

python ip tcpdump
1个回答
0
投票

问题

重新发布您在最初的问题中遇到的(修改后的)代码,因为它与此处有关:

parse_output = [
    '10.247.15.39', '172.217.2.161', '13:25:31', '46',
    '10.247.15.39', '172.217.2.163', '13:25:31', '46',
    '172.217.2.161', '10.247.15.39', '13:25:31', '0'
]
for i in range(0, len(parse_output), 4):
    newlist = []
    newlist.append("source: " + parse_output[i] +
        " destination: " + parse_output[i + 1] +
        " time: " + parse_output[i + 2] + 
        " package size: "+ parse_output[i + 3])
    print(newlist)

产生此输出的内容:

['source: 10.247.15.39 destination: 172.217.2.161 time: 13:25:31 package size: 46']
['source: 10.247.15.39 destination: 172.217.2.163 time: 13:25:31 package size: 46']
['source: 172.217.2.161 destination: 10.247.15.39 time: 13:25:31 package size: 0']

目标是['source: 10.247.15.39 destination: 172.217.2.161 time: 13:25:31 number of packet:5 total packet size: 46'],它包括两个IP,时间戳记,数据包数量和第一个数据包的总数据包大小。

解决方案

除长度外,我们需要的所有信息都存在于第一个数据包中,因此不需要for循环。每个数据包有4条数据,因此可以通过将parse_input的长度除以4得到数据包的数量。在此示例中,创建12个“数据包”作为输入数据。

packet = ['10.247.15.39', '172.217.2.161', '13:25:31', '46']
parse_output = 12*packet
newlist = [
    "source: " + parse_output[0] +
    " destination: " + parse_output[1] +
    " time: " + parse_output[2] +
    " number of packet:" + str(int(len(parse_output)/4)) +
    " total packet size: "+ parse_output[3]
]
print(newlist)
© www.soinside.com 2019 - 2024. All rights reserved.