如何使用python将url字符串转换为安全字符?

Rol*_*ndo 13 python

假设我有以下字符串:

"http://earth.google.com/gallery/kmz/women_for_women.kmz?a=large"
Run Code Online (Sandbox Code Playgroud)

是否有一些函数或模块能够将上面的字符串转换为下面的字符串,其中所有字符都更改为符合url:

"http%3A%2F%2Fearth.google.com%2Fgallery%2Fkmz%2Fwomen_for_women.kmz%3Fa%3Dlarge"
Run Code Online (Sandbox Code Playgroud)

在python中执行此操作的最佳方法是什么?

Col*_*lau 18

Python 2的urllib.quote_plus和Python 3的urllib.parse.quote_plus

url = "http://earth.google.com/gallery/kmz/women_for_women.kmz?a=large"
# Python 2
urllib.quote_plus(url)
# Python 3
urllib.parse.quote_plus(url)
Run Code Online (Sandbox Code Playgroud)

输出:

'http%3A%2F%2Fearth.google.com%2Fgallery%2Fkmz%2Fwomen_for_women.kmz%3Fa%3Dlarge'
Run Code Online (Sandbox Code Playgroud)

  • 另外,作为更新,您需要在 Python 3 中使用 `urllib.parse.quote_plus` (2认同)
  • @MaxCandocia 是的,这就是 `quote_plus` 的工作,它将空格转换为 `+`,因此得名。文档讨论了不同之处...... `quote` 用于 URL 路径组件,而 `quote_plus` 用于查询字符串参数名称和值。 (2认同)

小智 6

在 Windows 平台上可用

#! python3.6
from urllib.parse import quote


# result: http://www.oschina.net/search?scope=bbs&q=C%E8%AF%AD%E8%A8%80
quote('http://www.oschina.net/search?scope=bbs&q=C??',safe='/:?=&')
Run Code Online (Sandbox Code Playgroud)