URL に使用できない文字を使用する場合、URL エンコードを行う必要があります。
例えば REST API の GET メソッドのクエリパラメーターで、日時を ISO8601 形式で渡す必要がある場合、+
や :
が含まれるので、URL エンコード・デコードが必要になります。
エンコード・デコードには、urllib.parse
を使います。
エンコード
from datetime import datetime
from urllib import parse
dt = datetime.now()
encoded = parse.quote(dt.isoformat())
print(dt.isoformat()) # エンコード前
print(encoded) # エンコード後
出力結果
2022-01-07T13:06:54.927884
2022-01-07T13%3A06%3A54.927884
デコード
decoded = parse.unquote('2022-01-07T13%3A06%3A54.927884')
print(decoded)
出力結果
2022-01-07T13:06:54.927884