首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >urlparse的奇怪行为

urlparse的奇怪行为
EN

Stack Overflow用户
提问于 2012-12-08 10:22:35
回答 2查看 938关注 0票数 1

我想知道对于我在python的urlparse中看到的一些奇怪的行为,是否有已知的解决方法。

以下是python interpeter中几行代码的一些结果:

代码语言:javascript
复制
>>> import urlparse
>>> urlparse.parse_qsl('https://localhost/?code=bork&charlie=brown')
[('https://localhost/?code', 'bork'), ('charlie', 'brown')]

在上面的例子中,为什么第一个值的键是'https://localhost/?code'?‘,它不应该只是'code’吗?注意: parse_qs也有同样的不良行为。

代码语言:javascript
复制
>>> urlparse.urlparse('abcd://location/?code=bork&charlie=brown')
ParseResult(scheme='abcd', netloc='location', path='/?code=bork&charlie=brown', params='', query='', fragment='')
>>> urlparse.urlparse('https://location/?code=bork&charlie=brown')
ParseResult(scheme='https', netloc='location', path='/', params='', query='code=bork&charlie=brown', fragment='')

在上面的示例中,请注意查询字符串并不总是放入查询值中。为什么协议如此重要呢?查询字段不应该总是获取查询字符串吗?使用'ftp‘或其他众所周知的协议进行测试似乎也是不愉快的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-08 10:29:33

urlparse.parse_qsl (和urlparse.parse_qs)是用于请求的查询部分(?之后的字符串)的方法。

也许您想使用一种首先理解整个urlparse_qsl (urlparse.urlparse)的方法,然后将结果中的查询传递给URL

代码语言:javascript
复制
>>> import urlparse
>>> myurl = urlparse.urlparse('https://localhost/?code=bork&charlie=brown')
>>> print myurl
ParseResult(scheme='https', netloc='localhost', path='/', params='', query='code=bork&charlie=brown', fragment='')
>>> print myurl.scheme
https
>>> print urlparse.parse_qs(myurl.query)
{'charlie': ['brown'], 'code': ['bork']}

该方案很重要,因为尽管查询存在于通用语法中,但某些协议可能不支持它们。

另请参阅:

http://en.wikipedia.org/wiki/URI_scheme (查看官方注册计划)

票数 3
EN

Stack Overflow用户

发布于 2012-12-08 10:29:46

urlparse.parse_qs (和parse_qsl)的文档确实声明它的目的是“解析作为字符串参数给定的查询字符串”。您没有给它一个查询字符串,而是给了它整个URL。试着这样做:

代码语言:javascript
复制
>>> urlparse.parse_qsl('code=bork&charlie=brown')
[('code', 'bork'), ('charlie', 'brown')]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13773821

复制
相关文章

相似问题

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