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

Dan*_*man 8 python urlparse

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

>>> t = urlparse.urlparse('www.example.com', 'http')
>>> t.geturl()
'http:///www.example.com' # three ///
Run Code Online (Sandbox Code Playgroud)

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

'http://www.example.com' # two //
Run Code Online (Sandbox Code Playgroud)

mik*_*iku 5

简短回答(但它有点同义反复):

>>> urlparse.urlparse("http://www.example.com").geturl()
'http://www.example.com'
Run Code Online (Sandbox Code Playgroud)

在您的示例代码中,主机名被解析为路径而不是网络位置:

>>> 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='')
Run Code Online (Sandbox Code Playgroud)

  • 我知道了.我的印象是,url parse会巧妙地确定缺少一个方案并更好地重建它.通过简单地检查url字符串是否以'http://'开头并相应地附加它来修复它. (2认同)