私は値のリストを持っています:
md5 = ['1111', '3333', '44444', '555555', '56632423', '23423514', '2342352323']
それらをQuery Stringに連結したい:
'md5=1111&md5=3333&md5=44444&md5=555555&md5=56632423&md5=23423514&md5=2342352323'
それを行う最善の方法は何ですか?
私は値のリストを持っています:
md5 = ['1111', '3333', '44444', '555555', '56632423', '23423514', '2342352323']
それらをQuery Stringに連結したい:
'md5=1111&md5=3333&md5=44444&md5=555555&md5=56632423&md5=23423514&md5=2342352323'
それを行う最善の方法は何ですか?
クエリ文字列を作成しているので、そのために特別に設計された標準ライブラリの関数を使用することをお勧めします。
urllib.parse.urlencode()
(Python 3)urllib.urlencode()
(Python 2)...いじくり回すよりもstr.join()
。使用方法は次のとおりです。
from urllib.parse import urlencode # Python 3
# from urllib import urlencode # Python 2
md5 = ['1111', '3333', '44444', '555555', '56632423', '23423514', '2342352323']
urlencode([("md5", x) for x in md5])
結果:
'md5=1111&md5=3333&md5=44444&md5=555555&md5=56632423&md5=23423514&md5=2342352323'
あるいは ( Python チャットルームの Jon Clements に感謝します)、辞書を urlencode とパラメータに渡すことができますdoseq=True
:
urlencode({'md5': md5}, doseq=True)
...同じ結果が得られます。これについては、上記のリンク先のドキュメントで説明されています。
値要素自体はシーケンスにすることができます。その場合、オプションのパラメータdoseqがTrueに評価されると、キーの値シーケンスの各要素に対して、 で
key=value
区切られた個々のペアが生成されます。'&'
エンコードされた文字列内のパラメーターの順序は、シーケンス内のパラメーター タプルの順序と一致します。
md5s = '&'.join('md5='+m for m in md5)
括弧内の部分はジェネレーター式で、元のリストの'md5='+m
for eachを提供します。m
関数はそのjoin
式を取得し、それを 1 つの大きな文字列にリンクして、&
各ペアの間に を挿入します。
使用できますjoin()
:
md5=['1111','3333','44444','555555','56632423','23423514','2342352323']
print 'md5=' + '&md5='.join(md5)