Closed6
Python3_urllibモジュール,base64モジュール
Python実践レシピより
Python3エンジニア認定実践試験メモ
urllib.parse
main.py
from urllib import parse
url = "https://www.xxx.com/yyy/zzz/?key1=a&key2=b"
# parse
result = parse.urlparse(url)
print(result)
# ParseResult(scheme='https', netloc='xxx', path='xxx',
# params='', query='xxx', fragment='')
print(result.geturl())
# https://xxx.yyy.ne.jp/...
print(result[0])
# https
print(result.scheme)
# https
print(result.hostname)
# xxx.yyy.ne.jp
query文字列 -> 配列/リストへ
main.py
# parse(queryを連想配列に)
parsed = parse.parse_qs(result.query)
print(parsed)
# {'hoge': ['xxx'], 'fuga': ['xxx']}
# parse(queryをタプルのリストに)
parsed = parse.parse_qsl(result.query)
print(parsed)
# [('key1', 'a'), ('key2', 'b')]
配列/リスト -> query文字列へ
urlencode(要素に配列がある場合)
main.py
data = {"key1": "a", "key2": ["b", "c"]}
# 一つの文字列として並べる
encoded = parse.urlencode(data)
print(encoded)
# key1=a&key2=%5B%27b%27%2C+%27c%27%5D
# 同一のキーにして並べる
encoded = parse.urlencode(data, doseq=True)
print(encoded)
# key1=a&key2=b&key2=c
urlencode(要素が空白の場合)
main.py
query = {"key1": " "}
# +として置き換える
encoded = parse.urlencode(query)
print(encoded)
# key1=+
# %20に置き換える
encoded = parse.urlencode(query, quote_via=parse.quote)
print(encoded)
# key1=%20
文字列をパーセントエンコード
main.py
# quote関数(空白を%20にエンコード)
print(parse.quote(url))
# https%3A//www.xxx.com/yyy/zzz/%3Fkey1%3Da%26key2%3Db
# quote_plus関数(空白を+にエンコード)
print(parse.quote_plus(url))
# https%3A%2F%2Fwww.xxx.com%2Fyyy%2Fzzz%2F%3Fkey1%3Da%26key2%3Db
URLを結合
main.py
# join
print(parse.urljoin("https://www.xxx.com", "/yyy/zzz"))
# https://www.xxx.com/yyy/zzz
base64モジュール
文字列をbase64に変換
main.py
import base64
text = "Pythonは簡単に習得でき、それでいて強力な言語の一つです!!"
# Encode
encoded = base64.b64encode(text.encode())
print(encoded)
# Decode
decoded = base64.b64decode(encoded)
print(decoded.decode())
# Encode(+と/の代わりに@と#で置き換える)
encoded = base64.b64encode(text.encode(), altchars=b"@#")
print(encoded)
# Decode(+と/の代わりに@と#で置き換える)
decoded = base64.b64decode(encoded, altchars=b"@#")
print(decoded.decode())
画像データをbase64に変換
main.py
with open("./i_apple.png", mode="rb") as f:
encoded = base64.b64encode(f.read())
print(encoded)
このスクラップは2ヶ月前にクローズされました