0

一直在寻找如何将字典转换为字符串。但找到的结果不是我要找的。我目前找到的结果基本上是将整个字典变成了一个字符串,但我真的不想在我的字符串中出现 {}、 和 :。所以我得到了一本我想再次加入的排序 URLvars 字典。

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

所以我想要一种方法将这本字典转换为:

vars = "id=2&test=3"

更新: 感谢您的帮助。这也是我为我正在做的更大的脚本制作的 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
4

1 回答 1

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()])
于 2012-04-07T15:43:22.990 回答