2013-05-03 38 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}" }}' 

結果:

>>> 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

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

請注意輸出中的小寫字母true,正如JSON標準所要求的。

+0

如果我可以給這個答案10 upvotes我會的。謝謝 – 2017-06-16 20:44:04