我是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地址。
非常感谢您的帮助。
答案 0 :(得分:0)
首先,文件中的数据不会以逗号分隔,这意味着您只需循环遍历第二个循环中的所有字符即可。通过打印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()