петли вложенности - PullRequest
       6

петли вложенности

0 голосов
/ 13 мая 2018

Я пытаюсь выполнить вложенный цикл, чтобы объединить данные в строку, используя совпадающие MAC-адреса в обоих файлах.

Я могу вытащить цикл без использования регулярного выражения, однако при использовании приведенного ниже поискового регулярного выражения он будет проходить через MAC_Lines только один раз и печатать правильные результаты, используя первую запись в MAC_Lines, и останавливаться. Я не уверен, как заставить MAC_Lines перейти к следующей строке и повторить процесс для всех записей в MAC_Lines.

try:
    for mac in MAC_Lines:
        MAC_address = re.search(r'([a-fA-F0-9]{2}[:|\-]?){6}', mac, re.I)
        MAC_address_final = MAC_address.group()
        for arp in ARP_Lines:
            ARP_address = re.search(r'([a-fA-F0-9]{2}[:|\-]?){6}', arp, re.I)
            ARP_address_final = ARP_address.group()
            if MAC_address_final == ARP_address_final:
                print mac + arp
            continue

 except Exception:
    print 'completed.'

Результаты:

13,64,00:0c:29:36:9f:02,giga-swx 0/213,172.20.13.70, 00:0c:29:36:9f:02, vlan 64 

завершено.

1 Ответ

0 голосов
/ 14 мая 2018

Я узнал, что проблема была в том, как я открыл файл.Я должен был использовать ключевые слова «open»: «as» при открытии обоих файлов, чтобы файлы правильно закрывались и открывались для следующего цикла.Ниже приведен код, который я искал.

Ниже приведен код:

with open('MAC_List.txt', 'r') as read0:for items0 in read0:
    MAC_address = re.search(r'([a-fA-F0-9]{2}[:|\-]?){6}', items0, re.I)
    if MAC_address:
        mac_addy = MAC_address.group().upper()                                              
    with open('ARP_List.txt', 'r') as read1:
        for items1 in read1:
            ARP_address = re.search(r'([a-fA-F0-9]{2}[:|\-]?){6}', items1, re.I)
            if ARP_address:
                arp_addy = ARP_address.group()

            if mac_addy == arp_addy:
                print(items0.strip() + ' ' + items1.strip())
...