urlparse.urlparse在方案后返回3'/'而不是2

时间:2011-09-02 21:38:40

标签: python urlparse

我想在给定的url字符串前添加'http'方案名称,如果它丢失的话。否则,留下网址,所以我认为urlparse是正确的方法。但是每当没有方案而我使用获取网址时,我在方案和域之间得到///而不是'//'。

>>> t = urlparse.urlparse('www.example.com', 'http')
>>> t.geturl()
'http:///www.example.com' # three ///

如何转换此网址,使其看起来像:

'http://www.example.com' # two //

2 个答案:

答案 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是否包含字符串“//”来做到这一点,如果没有,在前面加上“//”。