Python循环中动态替换Payload字符串内经纬度变量的问题
解决Payload中动态替换经纬度的问题
方法一:正确使用f-string
原f-string失效的核心原因是没正确转义JSON结构里的大括号(f-string会把单个{}识别为变量占位符),加上原字符串的双引号转义增加了复杂度。可以改用单引号包裹整个字符串,内部双引号无需转义,同时把JSON自身的大括号用{{}}转义,再插入变量:
# 定义需要替换的经纬度变量 target_lat = 41.86464600000019 target_lon = -87.80732699999984 # 正确编写f-string payload = f'{{"showPrice":"DISCOUNT","searchRange":80.467,"points":[{{"latitude":{target_lat},"longitude":{target_lon}}}],"cardNumber":"blablabla","_mt926720371":"3796524828557652229"}}'
方法二:用字典+JSON序列化(更推荐)
直接拼接JSON字符串容易出错,尤其在循环中频繁修改时,更稳妥的方式是先构建Python字典,再序列化为JSON字符串:
import json # 循环中可动态修改的经纬度 target_lat = 41.86464600000019 target_lon = -87.80732699999984 # 构建Payload的字典结构 payload_data = { "showPrice": "DISCOUNT", "searchRange": 80.467, "points": [{"latitude": target_lat, "longitude": target_lon}], "cardNumber": "blablabla", "_mt926720371": "3796524828557652229" } # 序列化为JSON字符串 payload = json.dumps(payload_data)
循环中修改时,只需更新target_lat和target_lon的值,重新执行json.dumps()即可,无需处理字符串转义问题。
内容的提问来源于stack exchange,提问作者oToMaTiX
相关产品推荐
相关产品推荐

