python3中的JSON字符串和.format()

时间:2017-05-21 02:54:59

标签: python json string python-3.x

我正在尝试使用.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'被解释为键而不是字符串的一部分?

3 个答案:

答案 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)