【发布时间】:2021-11-30 06:57:03
【问题描述】:
我有一个如下所示的 csv 文件:
IP Address,Port,Protocol,State
192.168.3.1,53,tcp,open
192.168.13.100,80,tcp,open
192.168.3.1,443,tcp,close
192.168.3.71,1080,tcp,open
192.168.3.7,8888,tcp,open
192.168.23.12,80,tcp,filtered
192.168.3.12,443,tcp,open
192.168.3.12,631,tcp,open
如何在 python 3 中按 ip 地址和端口号对其进行排序?
我试过用这个:
#!/bin/python3
# import modules
import csv, ipaddress
data = csv.reader(open('list.csv'),delimiter=',')
data = sorted(data, key = ipaddress.IPv4Address)
print('After sorting:')
print(data)
但我有一个ipaddress.AddressValueError: Only decimal digits permitted in "['192" in "['192.168.3.1', '53', 'tcp', 'open']"
按ip地址排序后,代码应该检查端口,因为有可能相同的ip地址但不同的端口。
一个多星期以来一直试图解决这个问题。谢谢。
【问题讨论】:
-
我不推荐这种提取数据的方法,因为数据现在将包含标题行,这使得排序有点奇怪。如果您需要另外按端口排序,您可能需要从套接字导入以允许您使用
socket.getservbyname()对端口进行数字排序
标签: python csv sorting ip-address