Str.format() déclenche KeyError

Le code suivant déclenche une exception KeyError:

addr_list_formatted = []
addr_list_idx = 0

for addr in addr_list: # addr_list is a list
    addr_list_idx = addr_list_idx + 1
    addr_list_formatted.append("""
        "{0}"
        {
        "gamedir"  "str"
        "address"  "{1}"
        }
    """.format(addr_list_idx, addr))

Pourquoi?

J'utilise python 3.1.

50
demandé sur dreftymac 2010-05-03 02:06:31

1 réponses

Le problème est les caractères { et } que vous avez là qui ne spécifient pas de clé pour le formatage. Vous devez les doubler, alors changez votre code en:

addr_list_formatted.append("""
    "{0}"
    {{
    "gamedir"  "str"
    "address"  "{1}"
    }}
""".format(addr_list_idx, addr))
91
répondu Lasse Vågsæther Karlsen 2018-03-30 16:41:11