Python请求urlencode而不发送任何请求

时间:2015-07-01 14:48:38

标签: python python-requests urllib

有没有办法使用python Requests模块对字符串进行urlencode而不发送实际请求?

这可以通过urllib完成,如here所示:

>>> urllib.quote_plus('string_of_characters_like_these:$#@=?%^Q^$')
'string_of_characters_like_these%3A%24%23%40%3D%3F%25%5EQ%5E%24'

我找不到任何显示如何获得可比结果的请求文档。

提前致谢,

威廉

2 个答案:

答案 0 :(得分:7)

请求使用标准库来实现这些功能,并通过其compat模块使用它们:

>>> import requests.compat
>>> requests.compat.quote_plus
<function quote_plus at 0x10eb12de8>
>>> requests.compat.quote_plus('string_of_characters_like_these:$#@=?%^Q^$')
'string_of_characters_like_these%3A%24%23%40%3D%3F%25%5EQ%5E%24'

此模块还可以将您的代码与Python 2/3问题隔离开来。

(正如@LittleQ指出的那样,它也通过utils模块导出,如下所示:

from .compat import (quote, urlparse, bytes, str, OrderedDict, unquote, is_py2,
                     builtin_str, getproxies, proxy_bypass, urlunparse,
                     basestring)

......这可能是一种更明显的方式来调用该功能。

答案 1 :(得分:2)

在py2.7中:

In [12]: requests.utils.quote('string_of_characters_like_these:$#@=?%^Q^$')
Out[12]: 'string_of_characters_like_these%3A%24%23%40%3D%3F%25%5EQ%5E%24'