2013-05-03 17 views
18

なぜこのコードでKeyErrorが得られますか?文字列形式JSON文字列で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') 

エラーメッセージ:

KeyError: ' "File"' 

答えて

37

あなたは外括弧を倍増する必要があります。それ以外の場合はPythonは{ "File"..は、参照があまりにもされて考えて:

output_format = '{{ "File": "{filename}", "Success": {success}, "ErrorMessage": "{error_msg}", "LogIdentifier": "{log_identifier}" }}' 

結果:

>>> import json 
>>> print json.dumps(dict(File='My_file_name', 
...       Success=True, 
...       ErrorMessage='', 
...       LogIdentifier='123')) 
{"LogIdentifier": "123", "ErrorMessage": "", "Success": true, "File": "My_file_name"} 

>>> print output_format.format(filename='My_file_name', 
...       success=True, 
...       error_msg='', 
...       log_identifier='123') 
{ "File": "My_file_name", "Success": True, "ErrorMessage": "", "LogIdentifier": "123" } 

場合は、indicentally、あなたはJSON出力を生成している、あなたはjson moduleを使用したほうが良いと思います

JSON標準の要求に応じて、小文字のtrueが出力されます。

+0

私はこの答えを与えることができれば10 upvotes私は。ありがとう –