2017-10-05 11 views
1

je dois encoder le dictionnaire élément comme celui-ciPython- urllib.urlencode: parse articles dictionnaire en chaîne

data = OrderedDict([('mID', ['54a309ae1c61be23aba0da54', '54a309ae1c61be23aba0da63'])]) 

dans une chaîne formatée comme celui-ci

mID=[54a309ae1c61be23aba0da54,54a309ae1c61be23aba0da63] 

Quand j'utilise url_values = urllib.urlencode(data) je reçois mID=%5B%2754a309ae1c61be23aba0da54%27%2C+%2754a309ae1c61be23aba0da63%27%5D

Que pouvais-je faire?

+0

Pour la partie à l'intérieur des parenthèses, voir 'str.join()', pour l'ensemble 'str.format()'. –

Répondre

1

Peut être:

"{}=[{}]".format("mID",",".join(data["mID"])) 
+0

cela fonctionne, mais pouvez-vous l'expliquer davantage –

+0

S'il vous plaît lire à propos de sting formatage et rejoindre python @A_Matar –

1

Avec module urllib.parse pour Python v3.x:

import collections 
from urllib import parse 

data = collections.OrderedDict([('mID', ['54a309ae1c61be23aba0da54', '54a309ae1c61be23aba0da63'])]) 
urlenc_str = parse.unquote_plus(parse.urlencode(data)) 
urlenc_str = urlenc_str.replace("'", '').replace(' ', '') 

print(urlenc_str) 

La sortie:

mID=[54a309ae1c61be23aba0da54,54a309ae1c61be23aba0da63] 

type Checking:

print(type(urlenc_str)) # <class 'str'> 
+0

J'utilise python2 et en essayant d'importer l'analyse, il me donne 'ImportError: ne peut pas importer le nom parse' –

+0

@A_Matar, I ' J'ai peur que ce soit pour Python 3.x – RomanPerekhrest