首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >urlparse.urlparse在方案后返回3 '/‘而不是2

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

Stack Overflow用户
提问于 2011-09-03 05:38:40
回答 2查看 1.3K关注 0票数 9

我想在一个给定的url字符串前面添加'http‘方案名称,如果它丢失了。否则,不要管url,所以我认为urlparse是正确的方式。但是每当没有方案并且我使用get url时,我在方案和域之间得到的是/而不是'//‘。

代码语言:javascript
复制
>>> t = urlparse.urlparse('www.example.com', 'http')
>>> t.geturl()
'http:///www.example.com' # three ///

如何将此url转换为如下所示:

代码语言:javascript
复制
'http://www.example.com' # two //
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-03 05:46:04

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

代码语言:javascript
复制
>>> urlparse.urlparse("http://www.example.com").geturl()
'http://www.example.com'

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

代码语言:javascript
复制
>>> 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='')
票数 6
EN

Stack Overflow用户

发布于 2011-09-03 12:08:53

如果您想要像您打算的那样使用urlparse,最接近的“正确”等效方法是使用"//www.example.com“作为urlstring。这样的urlstring无疑是不带模式的绝对路径,因此您可以提供"http“作为默认模式。我想你可以通过检测你的URL是否包含字符串"//“来做到这一点,如果没有,在前面加上"//”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7289481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档