gpt4 book ai didi

python - urlparse 的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 23:39:10 25 4
gpt4 key购买 nike

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

以下是 python 解释器中几行的一些结果:

>>> import urlparse
>>> urlparse.parse_qsl('https://localhost/?code=bork&charlie=brown')
[('https://localhost/?code', 'bork'), ('charlie', 'brown')]

在上面的示例中,为什么第一个值的键是“https://localhost/?code”?难道不应该只是“代码”吗?注意:parse_qs 也有同样的不良行为。

>>> 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='')

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

最佳答案

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

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

>>> 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']}

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

另请参阅:

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

关于python - urlparse 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13773821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com