0

私には機能があります

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

この関数の背後にある考え方は、タプルのリストと文字列のリストを引数として受け取ることです。タプルには、実際のアドレスからマップされたアドレスへのマッピングが含まれています。マップされたアドレスがリスト内の文字列で見つかった場合、実際のアドレスに置き換えられます

文字列のリストの最後の行は、作成中の新しいリストに 2 回追加されます。print ステートメントを追加する関数をステップ実行すると、リストの最後のタプルが 2 回評価されるように見えます。

別の if ステートメントを else 句に追加することで問題を回避できますが、どこが間違っているのかを理解したいと思います。どんな支援も大歓迎です!

4

1 に答える 1

0

ユーザーエラー。以前の関数を使用して、この関数の入力を生成しました。大まかに定義された正規表現に加えて、他の ACL 名のサブセットである ACL 名が原因で、出力が重複していました。

于 2016-06-01T11:02:02.217 に答える