我想在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\"}"
如何在其上添加动态数据?
提前致谢。
答案 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)