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 に答える