Python三重引号中使用f-strings格式化字符串报错如何解决?
错误原因
你遇到的两类报错本质都是JSON结构的大括号没有正确转义导致的:
- 使用f-string时,你没有将JSON本身需要保留的外层大括号转义,Python将其识别为f-string的插值占位符,触发
ValueError: Invalid format specifier - 使用format()方法时同样没有转义外层大括号,Python将
{\n "name"识别为占位符的key,找不到对应参数触发KeyError
最优解决方案
不需要手动拼接JSON字符串,直接使用requests内置的json参数传字典即可,框架会自动完成序列化、转义和请求头补全:
import requests org_names = ['name 1', 'name 2'] headers = { 'Authorization': 'xxxxx' } for name in org_names: payload = { "name": name, "groupId": "xxxx" } response = requests.post('https://xxxx', json=payload, headers=headers) data = response.json()
手动拼接JSON的修正写法
如果确实需要手动拼接字符串,可参考以下两种正确写法:
f-string写法
for name in org_names: # 需要保留的JSON大括号用双大括号转义,需要插值的变量用单大括号 values = f""" {{ "name": "{name}", "groupId": "xxxx" }} """
format()写法
for name in org_names: values = """ {{ "name": "{}", "groupId": "xxxx" }} """.format(name)
内容的提问来源于stack exchange,提问作者Aerandir
相关产品推荐
相关产品推荐

