[解決済み] Python, 逆関数 urllib.urlencode
質問
加工後のデータを変換するには?
urllib.urlencode
をディクショナリに変換できますか?
urllib.urldecode
は存在しません。
どのように解決するのですか?
として
ドキュメント
に対して
urlencode
と言う。
urlparseモジュールは 関数 parse_qs() および parse_qsl() を提供します。 これらはクエリ文字列をパースするために使用されます。 をPythonのデータ構造にパースするために使われる関数を提供します。
(古いPythonのリリースでは、これらは
cgi
モジュールにありました)。 ですから、例えば
>>> import urllib
>>> import urlparse
>>> d = {'a':'b', 'c':'d'}
>>> s = urllib.urlencode(d)
>>> s
'a=b&c=d'
>>> d1 = urlparse.parse_qs(s)
>>> d1
{'a': ['b'], 'c': ['d']}
元の辞書との明らかな違いである
d
とquot;ラウンドトリップされたもの
d1
は、後者が(この場合、単項目である)
リスト
を値として持っていることです。これは、クエリ文字列には一意性の保証がないためで、アプリにとっては各キーに対してどのような複数の値が与えられたかを知ることが重要な場合があります(つまり、リストは常に単一項目であるとは限らないのです;-)。
代替案として
>>> sq = urlparse.parse_qsl(s)
>>> sq
[('a', 'b'), ('c', 'd')]
>>> dict(sq)
{'a': 'b', 'c': 'd'}
を使用すると、ペアのシーケンスを得ることができます (urlencode はこのような引数も受け付けます。この場合、順序を保持しますが、dict の場合は保持する順序がありません;-) 。 重複するキーがないことが分かっている場合、あるいはあっても気にしない場合は、(私が示したように)
dict
を呼び出して、リスト以外の値を持つ辞書を取得することができます。 しかし、一般的には、重複している
は
が存在する場合にどうしたいかを考える必要があります(Pythonはあなたの代わりにそれを決めてくれません;-)。
関連
-
[解決済み】Pythonのvirtualenvを離脱/終了/無効化する方法
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] JSONデータをファイルに書き込むにはどうしたらいいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] 新しいpip backtrackingの実行時問題の解決
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?