我是 python 的新手,试图创建一个 python3 脚本,它接受一个像这样格式的 CSV 输入(它是一个防火墙规则集):
Source;Destination;Service;Action;Comment
10.0.0.0/8 172.16.0.0/16 192.168.0.0/24 23.2.20.6;10.0.0.1 10.0.0.2 10.0.0.3;udp:53 tcp:53;accept;No.10: ID: INC0000000001
并关联其中包含的 IP。
我创建了以下基础:
import ipaddress
import csv
with open('BE-E2_D1_Source.csv', 'rt') as f:
reader = csv.reader(f)
for row in reader:
str(row)
x=';'.join(row)
for row2 in x:
y=' '.join(row)
print (y.split(" "))
第一个问题:这将返回一个输出,该输出返回 CSV 文件中包含的行数的 60 倍。我无法理解为什么。你能帮我吗?
第二个问题:我真的很感谢输入,以便将源和/或目标中的 IP 地址关联起来。
任何帮助是极大的赞赏。
首先,文件中的数据不是用逗号分隔的,这意味着您只需在第二个循环中遍历所有字符。通过打印亲自查看row2
。
我相信您正试图为<fieldname>: <data>
文件中的每一行数据打印出类似 , 的内容。
您不需要导入的模块。以下脚本工作正常。
with open('BE-E2_D1_Source.csv', 'r') as f:
lines = [i.strip() for i in f.readlines()]
header = lines[0].split(';')
rows = [i.split(';') for i in lines[1:]]
for row in rows:
for idx, field in enumerate(row):
print(f"{header[idx]}: {field}")
print()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句