Format-String der JSON-Zeichenfolge gibt KeyError
Warum funktioniert dieser code geben KeyError
?
output_format = """
{
"File": "{filename}",
"Success": {success},
"ErrorMessage": "{error_msg}",
"LogIdentifier": "{log_identifier}"
}
"""
print output_format.format(filename='My_file_name',
success=True,
error_msg='',
log_identifier='123')
Fehlermeldung:
KeyError: ' "File"'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie verdoppeln die äußeren Klammern; ansonsten Python denkt
{ "File"..
ist eine Referenz zu:Ergebnis:
Wenn indicentally, die Sie produzieren JSON-Ausgabe, Sie wären besser dran mit der
json
- Modul:Hinweis: die Kleinbuchstaben
true
in der Ausgabe, wie in der JSON-standard.{..}
Paare, die nicht Platzhalter.Erweitern auf Martijn Pieters Antwort und Kommentar:
Laut MArtijn' Kommentar, Flucht { .. } - Paaren, die nicht Platzhalter ist Sie Weg zu gehen, mit verschachtelten dictionaries. Ich habe nicht geglückt ist dabei, dass, so schlage ich die folgende Methode.
Verschachtelte dictionaries habe ich versucht das verdoppeln in einem beliebigen { und } der geschachtelten dictionaries.
Aber das macht mit format zu ändern die Werte in einem json-string, ein über-Komplex-Methode, so dass ich mit einem twist auf den format-Befehl.
Ich ersetzen Sie ${param_name} in einen json-string. Zum Beispiel:
Mein vordefinierten JSON sieht wie folgt aus:
Biete ich dieses Wörterbuch als Werte zu ersetzen, anstatt die Parameter
Und verwenden Sie diesen code, um zu tun, die Ersatz -