urlparse() 查询字符串丢失

urlparse() query string missing

我有两个系统:

第一个按预期工作:

>>> urlparse.urlparse('foo://bar/?blu=1')
ParseResult(scheme='foo', netloc='bar', path='/', params='', query='blu=1', fragment='')

# sys.version_info(major=2, minor=7, micro=12, releaselevel='final', serial=0)

第二个不一样:

>>> urlparse.urlparse('foo://bar/?blu=1')
ParseResult(scheme='foo', netloc='bar', path='/?blu=1', params='', query='', fragment='')

#sys.version_info(major=2, minor=7, micro=3, releaselevel='final', serial=0)

这是怎么回事?

两者都使用 Python 2.7.

第二台机器是 运行ning 非常古老的 Python 2.7 版本。您已经 运行 进入 issue 9374, a fix for which landed in Python 2.7.4rc1, which released on 2013-03-23,所以它是比那个更早的 2.7 版本。

来自2.7.4rc1 NEWS file

  • Issue #9374: Generic parsing of query and fragment portions of url for any scheme. Supported both by RFC3986 and RFC2396.

patch that fixes it is not that big, you could just copy the fixed urlsplit() function 和猴子补丁 urllib 如果你不能升级那台机器(你必须先从 urllib 导入一些 _private 名字, 当然).