我有一个URL字符串
https://example.com/search?'=$&(=/&)=!
我想把它变成它的逃逸形式
https://example.com/search?%28=%2F&%29=%21&%27=%24
据报道,res.request.path_url
人使用的是Python.
我一直在try urllib.parse.quote
/parse_qs
,但这并没有让我达到这个目标:
import requests
from urllib.parse import quote, urlsplit, parse_qs
# reference:
res = requests.get("https://example.com/search", params={"(": "/", ")": "!", "'": "$"})
print(res.request.path_url)
url = "https://example.com/search?'=$&(=/&)=!"
p = urlsplit(url)
path_url = p.path or "/"
if p.query:
parsed_query = parse_qs(p.query)
escaped_qs = "&".join(
f"{quote(key)}={','.join(quote(item) for item in value)}"
for key, value in parse_qs(p.query).items()
)
path_url += f"?{escaped_qs}"
print(path_url)
/search?%28=%2F&%29=%21&%27=%24
/search?%27=%24&%28=/&%29=%21
也许有一种完全更简单的方法.有什么提示吗?