Python 的“urlparse”:向 URL 添加 GET 关键字
我正在这样做:
urlparse.urljoin('http://example.com/mypage', '?name=joe')
我得到这个:
'http://example.com/?name=joe'
虽然我想得到这个:
'http://example.com/mypage?name=joe'
我做错了什么?
I'm doing this:
urlparse.urljoin('http://example.com/mypage', '?name=joe')
And I get this:
'http://example.com/?name=joe'
While I want to get this:
'http://example.com/mypage?name=joe'
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用 urlparse.urlunparse :
You could use urlparse.urlunparse :
您遇到了影响 Python 2.4-2.6 的已知错误。
如果您无法更改或修补您的 Python 版本,@jd 的解决方案 将解决该问题。
但是,如果您需要一个像标准 urljoin 一样工作的更通用的解决方案,则可以使用包装器方法来实现该特定用例的解决方法,并默认为标准 urljoin( ) 否则。
例如:
You're experiencing a known bug which affects Python 2.4-2.6.
If you can't change or patch your version of Python, @jd's solution will work around the issue.
However, if you need a more generic solution that works as a standard
urljoin
would, you can use a wrapper method which implements the workaround for that specific use case, and default to the standardurljoin()
otherwise.For example:
我通过将 Python 2.6 的 urlparse 模块与我的项目捆绑在一起解决了这个问题。我还必须捆绑在
collections
中定义的namedtuple
,因为urlparse
使用它。I solved it by bundling Python 2.6's
urlparse
module with my project. I also had to bundlenamedtuple
which was defined incollections
, sinceurlparse
uses it.你确定吗?在 Python 2.7 上:
Are you sure? On Python 2.7: