2013-05-10 236 views
0

我有值列表:如何將字符串列表轉換爲查詢字符串?

md5 = ['1111', '3333', '44444', '555555', '56632423', '23423514', '2342352323'] 

我想將它們串聯成一個Query String

'md5=1111&md5=3333&md5=44444&md5=555555&md5=56632423&md5=23423514&md5=2342352323' 

什麼是做到這一點的最好方法是什麼?

+1

您可能首先想嘗試查看一些相關問題,例如[this one](http://stackoverflow.com/questions/4481724/convert-a-list-of-characters-into-一個字符串)。 :) – summea 2013-05-10 23:04:48

+3

未來,您應該提供更高級別的信息。你在建立一個查詢字符串以在URL中使用嗎?如果是這樣,告訴我們,然後給我們一個例子,而不是從最底層開始。請參閱[什麼是XY問題?](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)爲什麼你通常會以這種方式獲得更好的答案(儘管這一次,你很幸運,零比雷埃夫斯爲你猜測)。 – abarnert 2013-05-10 23:13:52

+0

重新打開,因爲這不是鏈接問題的重複,如@ZeroPiraeus所示。 – davidism 2014-06-20 19:13:19

回答

0

您可以使用join()

md5=['1111','3333','44444','555555','56632423','23423514','2342352323'] 
print 'md5=' + '&md5='.join(md5) 
+0

這並沒有給他他要求的輸出。 – abarnert 2013-05-10 23:05:18

+0

我需要在每個索引之間添加並標記 – 2013-05-10 23:06:08

+0

@abarnert:我已經更新了我的答案。 – 2013-05-10 23:06:39

5
md5s = '&'.join('md5='+m for m in md5) 

的部分括號內是一個生成器表達式,它給你'md5='+m在原始列表中的每個m

join函數採用該表達式並將其鏈接成一個大字符串,並在每對之間放置一個&

11

既然你正在構建一個查詢字符串,最好是使用函數從專門設計用於這樣做的標準庫:

......比起來用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 chatroom),你可以通過字典來urlencode和參數doseq=True

urlencode({'md5': md5}, doseq=True) 

...產生相同結果。這是上面鏈接的文檔中說明:

本身的值元素可以是一個序列,並且在這種情況下,如果該可選參數doseq是評估爲,從個人key=value對通過'&'分離是爲密鑰的值序列的每個元素生成。編碼字符串中參數的順序將與序列中參數元組的順序相匹配。

+1

是的,如果他構建了一個查詢字符串(很可能),這絕對是最好的方法。您可能希望在Python 3.x中添加「urllib.parse.urlencode」而不是「urllib.urlencode」。 – abarnert 2013-05-10 23:12:00

+0

@abarnert完成:-) – 2013-05-10 23:12:28