You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python的urllib仅编码URL中的空格而非其他特殊字符?

使用urllib.parse实现仅编码URL空格的正确方式

直接使用urllib.parse.quote()会编码整个URL的特殊字符(包括冒号、斜杠),这是因为它默认会处理所有非ASCII和非安全字符。要实现仅编码空格、保留URL结构字符(如冒号、斜杠)的效果,只需拆分URL组件后针对性编码,再重新拼接即可。

方法:拆分URL后单独编码路径部分

利用urllib.parse.urlsplit()将URL拆分为协议、域名、路径等组件,仅对路径部分进行编码(通过safe参数指定保留斜杠),最后用urlunsplit()拼接回完整URL。

示例代码:

from urllib.parse import urlsplit, urlunsplit, quote

url = 'https://somethingA/somethingB/somethingC/some spaces here'
# 拆分URL为各个组件
parts = urlsplit(url)
# 编码路径部分,指定safe='/'保留斜杠,仅编码空格等特殊字符
encoded_path = quote(parts.path, safe='/')
# 重新拼接URL
new_url = urlunsplit((parts.scheme, parts.netloc, encoded_path, parts.query, parts.fragment))
print(new_url)

输出结果:https://somethingA/somethingB/somethingC/some%20spaces%20here

优势说明

相比手动replace(' ', '%20'),这种方法不仅能处理空格,还能自动编码URL路径中其他需要转义的特殊字符(如中文、&、=等),同时严格保留URL的结构完整性,避免手动实现可能遗漏的安全漏洞。

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:41:12