如何使用Format在Python中连接字符串?

时间:2018-06-01 12:48:25

标签: python django python-3.x python-2.7 django-rest-framework

我想在Payload中发送动态数据,

payload = "{\r\n \"name\": \"{0}\",\r\n \"id\":\"{1}\"}".format(1,2)
*** KeyError: '\r\n "name"'

但是当我尝试添加静态值时,它运行正常:

payload = "{\r\n \"name\": \"just\",\r\n \"id\":\"32\"}"

如何在其上添加动态数据?

提前致谢。

4 个答案:

答案 0 :(得分:3)

这是因为第一个和最后一个括号。

您必须转义{}

"{{\r\n \"name\": \"{}\",\r\n \"id\":\"{}\"}}".format(1,2)

答案 1 :(得分:3)

而不是在字符串中操作JSON,而是使用JSON模块。

<强>实施例

import json
payload = {"name": '',"id":''}
payload["name"] = 1
payload["id"] = 2

payload = json.dumps(payload)
print( payload )
print( type(payload) )

<强>输出:

{"name": 1, "id": 2}
<type 'str'>

答案 2 :(得分:2)

你的问题是,当你使用format()时,大括号字符是特殊的(因为{0})并且需要通过加倍不特殊的大括号来转义:

>>> payload = "{{\r\n \"name\": \"{0}\",\r\n \"id\":\"{1}\"}}".format("just",32)
>>> payload
'{\r\n "name": "just",\r\n "id":"32"}'

答案 3 :(得分:0)

问题来自您正在使用的{和}。你应该加倍他们:

payload = "{{\r\n \"name\": \"{0}\",\r\n \"id\":\"{1}\"}}".format(1,2)