我想在给定的url字符串前添加'http'方案名称,如果它丢失的话。否则,留下网址,所以我认为urlparse是正确的方法。但是每当没有方案而我使用获取网址时,我在方案和域之间得到///而不是'//'。
>>> t = urlparse.urlparse('www.example.com', 'http')
>>> t.geturl()
'http:///www.example.com' # three ///
如何转换此网址,使其看起来像:
'http://www.example.com' # two //
答案 0 :(得分:5)
简短回答(但有点同义反复):
>>> urlparse.urlparse("http://www.example.com").geturl()
'http://www.example.com'
在您的示例代码中,主机名被解析为路径而不是网络位置:
>>> urlparse.urlparse("www.example.com/go")
ParseResult(scheme='', netloc='', path='www.example.com/go', params='', \
query='', fragment='')
>>> urlparse.urlparse("http://www.example.com/go")
ParseResult(scheme='http', netloc='www.example.com', path='/go', params='', \
query='', fragment='')
答案 1 :(得分:1)
如果你想要使用urlparse,最接近的“正确”等价物是使用“//www.example.com”作为urlstring。这样的urlstring毫不含糊地是一个没有方案的绝对路径,因此你可以提供“http”作为默认方案。我想你可以通过检测你的URL是否包含字符串“//”来做到这一点,如果没有,在前面加上“//”。