如何在Python中对特殊字符~进行URL编码?
解决urllib.parse.quote不编码~的问题
要让~被编码成%7E,直接用quote默认逻辑做不到——因为根据URL规范,~属于无保留字符,urllib.parse.quote会始终保留_.-~这几个字符,哪怕修改safe参数也不会编码它们。
给你两种可行的解决办法:
方法一:编码后手动替换
先通过quote处理其他需要编码的字符,再把~替换成%7E:
from urllib.parse import quote input_string = 'https://bla/ble:bli~' url_encoded = quote(input_string).replace('~', '%7E') print(url_encoded) # 输出: https%3A//bla/ble%3Abli%7E
方法二:自定义编码函数
如果需要频繁处理这类场景,可以写个小函数,手动控制所有字符的编码逻辑:
from urllib.parse import quote def quote_with_tilde(s): # 先编码除~外的字符,再替换~ return quote(s).replace('~', '%7E') input_string = 'https://bla/ble:bli~' print(quote_with_tilde(input_string)) # 输出: https%3A//bla/ble%3Abli%7E
第一种方法最简单直接,完全能满足你的需求。
内容的提问来源于stack exchange,提问作者Stamatis Tiniakos
相关产品推荐
相关产品推荐

