Python中如何无需构造字典直接将字符串转为URL友好编码
正确实现方法
你之前用的urlencode本身是为序列化URL查询参数键值对设计的,天然不支持直接传入单个字符串编码,要实现你的需求应该使用urllib.parse模块下的quote方法:
基础用法
from urllib.parse import quote # 直接传入待编码字符串即可 encoded_string = quote("foo://bar_baz")
默认输出为:foo%3A//bar_baz
完全匹配你原有编码结果的写法
如果需要和你之前用urlencode得到的、连斜杠也转义的结果完全一致,额外指定safe参数为空字符串即可:
from urllib.parse import quote encoded_string = quote("foo://bar_baz", safe='')
输出为:foo%3A%2F%2Fbar_baz
补充说明
- 如果你的场景中需要把空格编码为
+而非%20,可以替换为同模块下的quote_plus方法,用法和quote完全一致。 - 你之前的示例代码里存在变量名拼写错误,定义的变量是
mydict,调用urlencode时传的是mydic,实际运行也会触发报错。
内容的提问来源于stack exchange,提问作者Simon Ernesto Cardenas Zarate
相关产品推荐
相关产品推荐

