python urldecode用法

在项目中遇到URL转码问题,从JS到Python的数据转换引起不一致。Python字典在URL解码时会默认添加空格,导致调用失败。解决方法是先将字典转换为字符串再进行解码,确保与JS结果一致,避免MD5加密或调用时出现问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做项目外部调用需要对url 做转码,因为开始再js  上直接做单次调用模拟均没有问题,移植python 就出现问题,发现python 和js  数据转换的时候还是存在问题。

例如数据为这样

[{"sku_no":"10304026","amount":"98.00","storage_code":"001"},{"sku_no":"11399053","amount":"218.00","storage_code":"001"},{"sku_no":"11503078","amount":"65.00","storage_code":"001"}]

js 中转换

但是python中 字典数据是不能直接转的需要做处理。

from urllib import parse
import json

data=[{"sku_no":"10304026","amount":"98.00","storage_code":"001"},{"sku_no":"11399053","amount":"218.00","storage_code":"001"},{"sku_no":"11503078","amount":"65.00","storage_code":"001"}]

#ensure_ascii=False这个是为了防止字段转换json数据后会出现"变为'这个部分外部接口会解析失败。
datajson = json.dumps(requestData, ensure_ascii=False)
values =  parse.quote(datajson)

出来后的结果对比

%5B%7B%22sku_no%22%3A%2210304026%22%2C%22amount%22%3A98.00%2C%22storage_code%22%3A%22001%22%7D%2C%7B%22sku_no%22%3A%2211399053%22%2C%22amount%22%3A218.00%2C%22storage_code%22%3A%22001%22%7D%2C%7B%22sku_no%22%3A%2211503078%22%2C%22amount%22%3A65.00%2C%22storage_code%22%3A%22001%22%7D%5D



%5B%7B%22sku_no%22%3A%20%2210304026%22%2C%20%22amount%22%3A%2098.0%2C%20%22storage_code%22%3A%20%22001%22%7D%2C%20%7B%22sku_no%22%3A%20%2211399053%22%2C%20%22amount%22%3A%20218.0%2C%20%22storage_code%22%3A%20%22001%22%7D%2C%20%7B%22sku_no%22%3A%20%2211503078%22%2C%20%22amount%22%3A%2065.0%2C%20%22storage_code%22%3A%20%22001%22%7D%5D

对比后发现

转换之后会默认增加空格。

因此会调用失败。

上面的代码也需要做相应的调整:

#%20 就是里面的空格
values =  parse.quote(datajson).replace("%20","")

这样出来后的数据就一致了。 再进MD5

 加密或者调用都不会有问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值