2012-04-07 167 views
0

一直在搜索如何將字典轉換爲字符串。但結果發現不是我正在尋找的。 我目前發現的結果基本上是將整個字典變成一個字符串,但我並不真正想在我的字符串中使用{}和。 所以我得到了一個我想再次聯合在一起的排序URLvars的字典。將字典轉換爲字符串

vars = {"id":"2", "test":"3"} 

,所以我想這本詞典轉換成一種方式:

vars = "id=2&test=3" 

UPDATE: 感謝您的幫助。這也是我爲我做的更大腳本所做的POC!可能是更好的方式來寫這個壽,P

from urlparse import urlparse 
import urllib 

def main(url, var, params): 
    urllenght = len(url) 
    urlfind = url.find("?") 
    lenght = urlfind - urllenght 

    params = '&'.join(["%s=%s" % (k, v) for k, v in params.iteritems()]) 
    url = url[:lenght] 

    print params 
    print url 
    print url+"?"+params 

if __name__ == '__main__': 
    url="http://test.com/index.php?id=2&test=2" 
    url2 = urlparse(url) 
    params = dict([part.split('=') for part in url2[4].split('&')]) 
    print "Avaible URL params" 
    for k,v in params.items(): 
     print "Params: %s" % k 

    while True: 
     var = raw_input("Select param: ") 
     if var in params: 
      main(url, var, params) 
      break 
     else: 
      pass 

回答

0

你需要什麼,是urllib.urlencode

>>> import urllib 
>>> vars = {"id":"2", "test":"3"} 
>>> urllib.urlencode(vars) 
test=3&id=2 

但請記住,這也將轉換成特殊的URL符號的%構型中。所以,如果你不想那麼做,試試吧:

'&'.join([`%s=%s` % (k, v) for k, v in vars.iteritems()]) 
+0

唉。一直在查看urllib部分。沒有想到用這種方式使用urlencode。 謝謝! – TheAnonMatrix 2012-04-07 15:45:19

+0

@ user1299507你可能想[接受有用的答案](http://stackoverflow.com/faq#howtoask)。 – 2012-04-07 16:20:05