python:用百分号编码url?
我正在尝试转换以下urlpython:用百分号编码url?,python,Python,我正在尝试转换以下url http://www.website.com/search/si/1/doctors/Vancouver, BC 到 我试过了 urllib.quote('http://www.website.com/search/si/1/doctors/Vancouver, BC', '') 结果用百分号代替了所有的东西 正确的方法是什么 urllib.quote('www.website.com/search/si/1/doctors/Vancouver, BC') 没有第
http://www.website.com/search/si/1/doctors/Vancouver, BC
到
我试过了
urllib.quote('http://www.website.com/search/si/1/doctors/Vancouver, BC', '')
结果用百分号代替了所有的东西
正确的方法是什么
urllib.quote('www.website.com/search/si/1/doctors/Vancouver, BC')
没有第二个参数和协议部分http://
。第二个参数是不被替换的安全字符列表,默认值为'/'
,这在您的情况下是正常的。用于url路径
保留所有其他内容:
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
另见:
http%3A//www.website.com/search/si/1/doctors/温哥华%2C%20BC
您应该使用路径部分而不使用协议部分。否则,它会认为您要获取的是。您可以使用将路径与URL分开。这对您很有用:urllib.quote(URL,/:'])
omg…最后是一个真正的答案,而不是真正的答案:假设您在查询字符串中有一个:
http://www.website.com/Vancouver:BC“@AlexanderGelbukh很好,现在呢?@alecxe现在完美了。我想知道这是否不能用一个函数来完成。@AlexanderGelbukh yup,werkzeug
有助于避免在这里重新发明轮子,请参阅。
http://www.website.com/search/si/1/doctors/Vancouver%2C%20BC