我正在尝试使用.format()生成JSON字符串。 我尝试了以下方法:
TODO_JSON = '{"id": {0},"title": {1},"completed:" {2}}'
print(TODO_JSON.format(42, 'Some Task', False))
提出
File "path/to/file", line 2, in <module>
print(TODO_JSON.format(42, 'Some Task', False))
KeyError: '"id"'
为什么会出现此错误?为什么'id'被解释为键而不是字符串的一部分?
答案 0 :(得分:3)
{}
在str.format
(占位符和变量名称)中具有特殊含义,如果您需要文字{}
和format
,则可以使用{{
和}}
:
TODO_JSON = '{{"id": {0},"title": {1},"completed:" {2}}}'
print(TODO_JSON.format(42, 'Some Task', False))
# {"id": 42,"title": Some Task,"completed:" False}
答案 1 :(得分:1)
您可以使用%
格式化样式。
TODO_JSON = '{"id": %i,"title": %s,"completed:" %s}'
print(TODO_JSON % (42, 'Some Task', False))
答案 2 :(得分:0)
因为它试图解析属于json格式的外部{}
作为应由format
格式化的内容
但你应该试试json模块
import json
todo = {'id': 42, 'title': 'Some Task', 'completed': False}
TODO_JSON = json.dumps(todo)