python:如何用百分号编码网址?

1 投票
2 回答
671 浏览
提问于 2025-04-18 14:50

我正在尝试把下面这个网址转换成另一个格式:

http://www.website.com/search/si/1/doctors/Vancouver, BC

想要转换成:

http://www.website.com/search/si/1/doctors/Vancouver%2C%20BC

我试过这个方法:

urllib.quote('http://www.website.com/search/si/1/doctors/Vancouver, BC', '')

结果却把所有东西都替换成了百分号。

请问正确的做法是什么呢?

2 个回答

0
urllib.quote('www.website.com/search/si/1/doctors/Vancouver, BC')

没有第二个参数,也没有协议部分 http://。第二个参数是一个安全字符的列表,这些字符不会被替换,默认是 '/',在你的情况下是可以的。

1

使用 urllib.quote() 来处理网址中的 path,其他部分保持不变:

from urllib import quote
from urlparse import urlparse, urlunparse

url = "http://www.website.com/search/si/1/doctors/Vancouver, BC"

scheme, netloc, path, params, query, fragment = urlparse(url)
path = quote(path)
print urlunparse((scheme, netloc, path, params, query, fragment))

输出结果是:

http://www.website.com/search/si/1/doctors/Vancouver%2C%20BC

另外,您还可以查看:

撰写回答