2012-04-07 3 views
0

Искали, как преобразовать словарь в строку. Но найденные результаты - это не те, которые я ищу. Результаты, которые я нахожу, в основном превращают весь словарь в строку, но я действительно не хочу {}, и: в моей строке. Итак, у меня есть словарь отсортированных URL-адресов, которые я хотел объединить снова.Преобразование dict в строку

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

Argh. Смотрел вверх и вниз по секции urllib. Не думал об использовании urlencode. Спасибо! – TheAnonMatrix

+0

@ user1299507, вы можете [принять полезный ответ] (http://stackoverflow.com/faq#howtoask). –

Смежные вопросы