【问题标题】:urlparse() query string missingurlparse() 查询字符串丢失
【发布时间】:2018-09-22 06:16:59
【问题描述】:

我有两个系统:

第一个按预期工作:

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

【问题讨论】:

  • 能否请您提供完整的 Python 版本? import sys; print sys.version_info 应该给我们足够的。
  • (Python 2.7 多年来已经看到了大量的更新和错误修复,这几乎可以肯定是版本问题)。
  • 可能与bugs.python.org/issue9374相关;根据关闭的日期,我猜它仅在 2.7.7 及更高版本中。
  • 关于RFC 1808,这绝对是个bug,一定要检查你有最新的Python 2.7
  • 我得到了2.7.14.final0的第一个行为。

标签: python urlparse


【解决方案1】:

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

来自2.7.4rc1 NEWS file

  • 问题 #9374:通用解析任何 url 的查询和片段部分 方案。 RFC3986 和 RFC2396 均支持。

patch that fixes it 没有那么大,如果你不能升级那台机器,你可以复制fixed urlsplit() function 和猴子补丁urllib (你必须从@ 导入一些_private 名称987654329@ 当然是第一)。

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2014-09-05
    相关资源
    最近更新 更多