urlparse()查询字符串丢失

时间:2018-04-12 07:42:53

标签: 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)

第二个是不同的:

>>> 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。

1 个答案:

答案 0 :(得分:9)

第二台机器正在运行一个非常古老的Python 2.7版本。你已经遇到了issue 9374,这是一个修复版,它在Python 2.7.4rc1中登陆,released on 2013-03-23,所以它是一个早于它的2.7版本。

来自2.7.4rc1 NEWS file

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

patch that fixes it不是那么大,如果你不能升级那台机器,你可以复制fixed urlsplit() function和猴子补丁urllib(你必须导入一些)首先_private来自urllib的{​​{1}}名称。