urlparse()查询字符串丢失

gue*_*tli 3 python urlparse

我有两个系统:

第一个按预期工作:

>>> 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)
Run Code Online (Sandbox Code Playgroud)

第二个是不同的:

>>> 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)
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

两者都使用Python 2.7.

Mar*_*ers 9

第二台机器正在运行一个非常古老的Python 2.7版本.你已经遇到了问题9374,这是一个修复,它在2013年3月 23日发布的 Python 2.7.4rc1中登陆,所以它是一个早于它的2.7版本.

2.7.4rc1 NEWS文件:

  • 问题#9374:对任何方案的URL的查询和片段部分进行通用解析.RFC3986和RFC2396均支持.

修复它补丁并不是那么大,如果你不能升级那台机器,你可以复制固定urlsplit()功能和猴子补丁urllib(当然,你必须先导入一些_private名字urllib).