Der folgende Code löst eine KeyError
Ausnahme aus:
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))
Warum?
Ich benutze Python 3.1.
enumerate
ausführen (verwenden Sie , um die Unanständigkeiten zu erhalten).Antworten:
Das Problem sind diejenigen
{
und}
Zeichen, die Sie dort haben und die keinen Schlüssel für die Formatierung angeben. Sie müssen sie verdoppeln, also ändern Sie Ihren Code in:addr_list_formatted.append(""" "{0}" {{ "gamedir" "str" "address" "{1}" }} """.format(addr_list_idx, addr))
quelle
{
in der Antwort besteht nur darin, derformat
Methode mitzuteilen , dass hier kein Schlüssel zum Formatieren vorhanden ist (daher werden sie in der formatierten Zeichenfolge maskiert und es sollte kein Problem sein, einen JSON auf diese Weise zu erstellen). Alternativ gibt es andere effiziente Möglichkeiten, um Strings zu manipulieren, wie diejoin
Methode:"".join(['{"', var_name, '":', value, '}'])