Проблема с циклами FOR и корреляция IP-адресов - PullRequest
0 голосов
/ 08 октября 2018

Я новичок в 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(" "))

1-й выпуск: возвращает результат, который возвращает 60 раз строки, содержащиеся в файле CSV.Я не могу понять почему.Можете ли вы помочь?

2-й выпуск: я был бы очень признателен за ввод данных для сопоставления IP-адресов в источнике и / или пункте назначения.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 08 октября 2018

Прежде всего, данные в вашем файле не разделены запятыми, что означает, что вы просто зацикливаетесь на всех символах во втором цикле.Убедитесь сами, напечатав 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()
...