将dict转换为字符串

时间:2012-04-07 15:36:54

标签: string dictionary python-2.7

一直在搜索如何将字典转换为字符串。但结果并不是我想要的结果。 我目前发现的结果基本上是将整个字典变成一个字符串,但我真的不想要{},和:在我的字符串中。 所以我得到了一个排序的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

1 个答案:

答案 0 :(得分:0)

您需要的是urllib.urlencode

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

但请记住,它还会将特殊的URL符号转换为它们的%-form。所以,如果你不想那样,那就试试吧:

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