Python中使用f-string格式化字符串出现invalid format specifier报错如何解决?
Python f-string生成JSON时触发invalid format specifier报错的解决方法
报错根因
触发报错的核心原因是:f-string语法规定,单个{、}符号会被识别为Python表达式的包裹边界,你直接用单个大括号编写JSON结构,和f-string语法产生了冲突。
正确写法
方法1:转义字面量大括号
如果要在f-string中输出字面量大括号,用两个连续的大括号做转义即可,修改后的代码如下:
values = f'''{{ "sourceId": "{merchant['siteId']}", "programId": "{merchant['id']}" }}'''
方法2(更推荐):使用json模块序列化
你最终要生成的是JSON格式字符串,直接用Python内置的json模块序列化字典更稳妥,不需要手动处理转义、引号冲突问题,代码如下:
import json # indent参数用来控制缩进空格数,不需要格式化输出可直接移除 values = json.dumps({ "sourceId": merchant['siteId'], "programId": merchant['id'] }, indent=12)
注意事项
- f-string中输出字面量
{用{{替代,输出字面量}用}}替代 - 生成JSON字符串优先使用json模块处理,避免手动拼接字符串引发的格式错误
内容的提问来源于stack exchange,提问作者bogdan42
相关产品推荐
相关产品推荐

