我在尝试执行脚本时遇到以下错误
]""".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)
答案 0 :(得分:3)
您有开始和结束括号。 Format将它们解释为占位符,将其解释为dict。正如错误所述,其内容是\n "id":{id}…
等等。如果您不是{
作为占位符,请将它们加倍。
你正在尝试自己写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)