web-dev-qa-db-ja.com

python3リクエストはquote_plusの代わりにquoteを使用します

Python 3および requests モジュール/ライブラリを使用してRESTサービスをクエリします。

リクエストはデフォルトでurlencodingにurllib.parse.quote_plus()を使用しているようです。つまり、スペースは_+_に変換されます。

ただし、クエリを実行するRESTサービスはこれをandと誤解します。したがって、スペースを_%20_としてエンコードする必要があります。つまり、代わりにurllib.parse.quote()を使用します。

リクエストでこれを行う簡単な方法はありますか?ドキュメントにオプションが見つかりませんでした。

6
absurd

できることがわかりました!

from requests.utils import requote_uri
url = "https://www.somerandom.com/?name=Something Cool"
requote_uri(url)

'https://www.somerandom.com/?name=Something%20Cool'

ドキュメントはこちらrequote_uriメソッドはページの約半分です。

9
gallen