Après avoir utilisé cgi.parse_qs()
, comment reconvertir le résultat (dictionnaire) en chaîne de requête? Vous recherchez quelque chose de similaire à urllib.urlencode()
.
urllib.parse.
urlencode
(requête, doseq = False, [...])Convertissez un objet de mappage ou une séquence de n-uplets à deux éléments, pouvant contenir des objets str ou bytes, en un encodage à pourcentage ASCII chaîne de texte.
Un dict
est un mappage.
urllib.urlencode
(query
[doseq
])
Convertissez un objet de mappage ou une séquence de n-uplets à deux éléments en une chaîne "codée pour cent" ... une série dekey=value
paires séparées par'&'
personnages...
En python3, légèrement différent:
from urllib.parse import urlencode
urlencode({'pram1': 'foo', 'param2': 'bar'})
sortie: 'pram1=foo¶m2=bar'
pour la compatibilité python2 et python3, essayez ceci:
try:
#python2
from urllib import urlencode
except ImportError:
#python3
from urllib.parse import urlencode
Vous cherchez quelque chose exactement comme urllib.urlencode()
!
Toutefois, lorsque vous appelez parse_qs()
(distinct de parse_qsl()
), les clés de dictionnaire sont les noms de variable de requête uniques et les valeurs. sont des listes de valeurs pour chaque nom.
Afin de transmettre cette information à urllib.urlencode()
, vous devez "aplatir" ces listes. Voici comment faire avec une liste de tuples:
query_pairs = [(k,v) for k,vlist in d.iteritems() for v in vlist]
urllib.urlencode(query_pairs)