アカデミック

【Pythonお悩み解決】Web APIのクエリに特殊文字を与えたい

この記事は, Pythonを利用して研究を行なっていく中で私がつまずいてしまったポイントをまとめていくものです。同じような状況で苦しんでいる方々の参考になれば嬉しいです。Pythonつまずきポイント集の目次は以下のページをご覧ください。

【超初心者お悩み解決】Pythonつまずきポイント記事まとめページ この記事は,Pythonを利用して研究を行なっていく中で私がつまずいてしまったポイントをまとめていくものです。同じような状況で苦しんで...

本記事で紹介する解決策がBestという保証はできません。正確な情報を発信するように心掛けていますが図らずも誤った情報を記載してしまう場合があります。もしご指摘等がありましたら,コメント欄またはお問い合わせページよりご連絡下さい。

読みたい場所へジャンプ!

環境

●Ubuntu 18.04
●Python 3.7.3
●conda 4.8.3
●pytorch 1.2.0

実現したいこと

Web APIにクエリとして特殊文字を与えたい。

前提

ここでは単純に「https://example.com/api」に対して文字列をクエリとして渡すと,その文字列を返すようなAPIを考えてみましょう。

入力は「q={[文字列]}」という形で与えられるものとします。(ASCII文字)

Pythonでは,以下のようにWeb APIを利用できます。

import requests
import json

query = "hoge"

path = "http://example.com/api?q={query}"

r = requests.get(url)
data = json.loads(r.text)
print(data)

ここで,問題がおきます。例えば,文字列として「X+Y」を与える場合を考えます。「+」は特殊文字の1つで,クエリとして与えるとスペースに変換(エンコード)されてしまいます。

しかし,文字列「X+Y」をそのまま与えたいという場合もあるでしょう。そこで,解決方法は以下です。

方法

「+」をあらかじめエンコードした文字列に置き換えます。こちらのページで,特殊文字とコードの対応表が確認できます。

「+」は「%2B」に対応していることがわかります。そこで,「X+Y」を「X%2BY」と置き換えてクエリとして与えてあげればOKです。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です