python字符串格式keyError

时间:2018-03-12 22:24:26

标签: python string-formatting

我在尝试执行脚本时遇到以下错误

 ]""".format(id="123", name="test")
KeyError: '\n    "id"'

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

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)

3 个答案:

答案 0 :(得分:3)

  1. 您有开始和结束括号。 Format将它们解释为占位符,将其解释为dict。正如错误所述,其内容是\n "id":{id}…等等。如果您不是{作为占位符,请将它们加倍。

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

    json.dumps({"id": "123", name: "test"})
    

    甚至更好:让请求这样做。

答案 1 :(得分:2)

使用format时,文字{}需要escaped by doubling them

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

""".format(id="123", name="test")

答案 2 :(得分:-1)

尝试使用%s代替.format()

这有效:

import requests

payload = """[
  {'id':%s,'name': %s
}
]"""%("123","test")

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