この記事は, Pythonを利用して研究を行なっていく中で私がつまずいてしまったポイントをまとめていくものです。同じような状況で苦しんでいる方々の参考になれば嬉しいです。Pythonつまずきポイント集の目次は以下のページをご覧ください。
【超初心者お悩み解決】Pythonつまずきポイント記事まとめページ
この記事は,Pythonを利用して研究を行なっていく中で私がつまずいてしまったポイントをまとめていくものです。同じような状況で苦しんで...
スポンサーリンク
環境
●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です。