Python中修复无效格式说明符错误:POST请求代码问题排查
解决「无效格式说明符」错误的方案
你的问题出在f-string的使用方式上:当你在f-string里直接写{...}这种字典结构时,f-string会把大括号内的内容解析为格式占位符,其中的:会被当成格式说明符的语法,从而触发「无效格式说明符」错误。
正确做法:用JSON序列化生成字符串(推荐)
不要手动拼接JSON字符串,而是先构造Python字典,再用json.dumps()转换成标准JSON格式,这样既不会出错,也能保证格式合规:
import json # 先构造final_cres对应的字典 final_cres_data = { "threeDSServerTransID": server_transaction_id, "transStatus": "Y", "acsTransID": three_d_session, "messageType": "CRes", "messageVersion": "2.1.0" } data = { 'source': src, 'final_cres': json.dumps(final_cres_data), 'key': 'pk_live_51Jr1vKHWW88ELdDvVtlnR6MiY6ITPIVG4HHjjcFrHD4PizkO8m2g2nNCtOMe7KLpsUPgilz8VLoZf2NhtXZtiFIx00i5Ne7al6', } response = requests.post('some URL', headers=headers, data=data)
备选:转义f-string中的大括号(不推荐)
如果坚持要用f-string,需要把字典的大括号用{{}}转义,同时确保变量被正确包裹在引号中:
data = { 'source': src, 'final_cres': f'{{"threeDSServerTransID":"{server_transaction_id}","transStatus":"Y","acsTransID":"{three_d_session}","messageType":"CRes","messageVersion":"2.1.0"}}', 'key': 'pk_live_51Jr1vKHWW88ELdDvVtlnR6MiY6ITPIVG4HHjjcFrHD4PizkO8m2g2nNCtOMe7KLpsUPgilz8VLoZf2NhtXZtiFIx00i5Ne7al6', }
这种方法容易因为引号转义或变量内容(比如包含特殊字符)出错,所以优先推荐第一种JSON序列化的方式。
内容的提问来源于stack exchange,提问作者Max S
相关产品推荐
相关产品推荐

