2013-05-03 2 views
18

이 코드가 KeyError 인 이유는 무엇입니까?문자열 형식 a 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

; 그렇지 않으면 파이썬은 { "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 줄 수 있습니다. 감사 –