python字符串格式keyError

Nic*_*k01 0 python string-formatting

尝试执行我的脚本时出现以下错误

 ]""".format(id="123", name="test")
KeyError: '\n    "id"'
Run Code Online (Sandbox Code Playgroud)

这是我的脚本。我只需要格式化一个多行字符串。我尝试在格式部分使用字典,但这也不起作用。

import requests

payload = """[
  {
    "id":{id},
    "name": "{name}"
  }
]""".format(id="123", name="test")

headers = {"Content-Type": "application/json"}
r = requests.post("http://localhost:8080/employee", data=payload, 
headers=headers)
print(r.status_code, r.reason)
Run Code Online (Sandbox Code Playgroud)

Bre*_*bel 6

使用时format,文字{'s 和}'s 需要通过将它们加倍转义

payload = """[
  {{
    "id":{id},
    "name": "{name}"
  }}
]

""".format(id="123", name="test")
Run Code Online (Sandbox Code Playgroud)


YSe*_*elf 5

  1. 你有左括号和右括号。Format 将它们解释为占位符,而你则是字典。它的内容是,正如错误所说,\n "id":{id}…等等。如果您不打算{作为占位符,请将它们加倍。

  2. 您正在尝试自己编写json。不要那样。使用json模块:

    json.dumps({"id": "123", name: "test"})
    
    Run Code Online (Sandbox Code Playgroud)

    或者甚至更好:让请求做到这一点。