我想知道我在 python 的 urlparse 中看到的一些奇怪行为是否有已知的解决方法。
以下是 python interpeter 中几行的一些结果:
>>> 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='')
在上面的示例中,请注意查询字符串并不总是被放入查询值中。为什么协议很重要?查询字段不应该总是得到查询字符串吗?使用“ftp”或其他众所周知的协议进行测试似乎也令人不快。