2012-04-07 171 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