有没有办法使用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'
我找不到任何显示如何获得可比结果的请求文档。
提前致谢,
威廉
答案 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'