Python での Urlencode の使用

Fariba Laiq 2023年10月10日
  1. Python で urlencode() を使用して辞書を URL エンコードする
  2. Python で urlencode() を使用して複数値辞書を URL エンコードする
Python での Urlencode の使用

URL は、Uniform ResourceLocator の略です。URL は、ブラウザが Web ページのロードを要求する URL を介した Web 上のリソースのアドレスです。

URL エンコードは、制限された US-ASCII を使用して文字を特別な形式に変換するプロセスであり、すべてのブラウザと Web サーバーで広く受け入れられています。

URL に ASCII セットで定義された文字以外の文字が含まれている場合、これらの文字は有効な ASCII 形式に変換されます。URL にパーセント記号が頻繁に表示されるため、パーセントエンコードとも呼ばれます。

Web API を呼び出したり、HTTP フォームデータを送信したりするときは常に、エンコードされた URL を使用してクエリ文字列をエンコードします。Python では、urlib.parse モジュールを使用してクエリ文字列を URL エンコードできます。このモジュールには、URL でクエリ文字列をエンコードするための関数 urlencode() がさらに含まれています。クエリ文字列は、単にキーと値のペアの文字列です。

Python で urlencode() を使用して辞書を URL エンコードする

urlencode() 関数を使用して文字列を URL エンコードする場合、引数として文字列を受け入れないため、直接行うことはできません。辞書の形で引数を渡すことができます。ディクショナリは、データをキーと値のペアで格納する Python のデータ型です。

たとえば、次のようなクエリ文字列があります。

queryString = "name=" + "Jhon" + "&" + "age=" + "18"

まず、次のような辞書形式で記述する必要があります。

queryString = {"name": "Jhon", "age": "18"}

次のコードでは、urlib ライブラリをインポートする必要があり、クエリ文字列を urlib ライブラリの parse モジュールの urlencode() 関数に渡します。出力では、必要なエンコードされた URL を取得します。

出力では、エンコードされた URL は、スペース+ 記号に置き換えられ、:記号が&記号に置き換えられた形式になります。これは、クエリ文字列のエンコードされた URL の形式であるためです。

サンプルコード:

# python 3.x
import urllib

queryString = {"name": "Jhon", "age": "18"}
urllib.parse.urlencode(queryString)

出力:

#python 3.x
'age=18&name=Jhon'

Python で urlencode() を使用して複数値辞書を URL エンコードする

ここで、辞書の形式のクエリ文字列に、値が bluepinkgreen の colors という名前の属性のような複数値のデータが含まれているとしましょう。これは、複数値の属性です。Python でそのような辞書を URL エンコードすることもできます。

urlencode() 関数は、オプションの引数 doseq を取ります。その値を True に設定すると、出力で特殊文字を避けることができます。

サンプルコード:

import urllib

queryString = {"jeans": "Bell Bottom", "colors": ["blue", "pink", "green"]}
urllib.parse.urlencode(queryString, doseq=True)

出力:

'jeans=Bell+Bottom&colors=blue&colors=pink&colors=green'
著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

関連記事 - Python URL