Повторное добавление строки при использовании цикла for-else
У меня есть функция
def static_nat_fwsm_check(mapped_to_real_address_pairs,FWSM_ACLs):
amended_static_nat_acl=[]
for acl_line in FWSM_ACLs:
for i,j in mapped_to_real_address_pairs:
if j in acl_line:
amended_static_nat_acl.append('!STATIC NAT SUBSTITUTION FOR '+acl_line)
amended_static_nat_acl.append(re.sub(j,i,acl_line))
break
else:
amended_static_nat_acl.append(acl_line)
return amended_static_nat_acl
Идея, лежащая в основе функции, состоит в том, чтобы взять список кортежей и список строк в качестве аргументов. Кортежи содержат отображение реальных адресов на сопоставленные адреса. Если сопоставленный адрес найден в строке списка, он заменяется реальным адресом.
Последняя строка в списке строк добавляется дважды в новый список, который я создаю. Когда я перехожу через функцию добавления операторов печати, похоже, что последний кортеж в списке оценивается дважды.
Я мог бы обойти проблему, добавив еще одно выражение if в предложение else, но я бы хотел понять, в чем я ошибаюсь. Любая помощь с благодарностью!
1 ответ
Ошибка пользователя Я использовал предыдущую функцию для генерации ввода для этой функции. Свободно определяемое регулярное выражение, плюс имя ACL, которое было подмножеством других имен ACL, вызвало дублирование вывода.