python:编码一个带百分号的网址?

时间:2014-07-26 03:12:02

标签: python

我正在尝试转换以下网址

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 :(得分: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

另见:

答案 1 :(得分:0)

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

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