Comment urlencode querystring en Python?
Je suis en train de urlencode cette chaîne avant de me présenter.
queryString = 'eventName=' + evt.fields["eventName"] + '&' + 'eventDescription=' + evt.fields["eventDescription"];
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour passer vos paramètres dans
urlencode()
comme une cartographie (dict), ou une séquence de 2-tuples, comme:Python 3 ou au-dessus de
Utilisation:
Notez que cela ne pas faire de l'encodage de l'url dans le couramment utilisées sens (œil à la sortie). Pour que l'utilisation
urllib.parse.quote_plus
.urllib.urlencode([('name', 'brandon'), ('x', 1000)])
produit'name=brandon&x=1000'
(comme la réponse des états, s'il ne donne pas un exemple de code pour ça)OrderedDict
?urlparse
, 3.0+ utiliseurllib.parse
Python 2
Ce que vous cherchez est
urllib.quote_plus
:Python 3
En Python 3, le
urllib
paquet a été décomposés en composants plus petits. Vous allez utiliserurllib.l'analyser.quote_plus
(note de l'parse
enfant module)import urllib.parse ... urllib.parse.quote_plus(query)
python3 -c "import urllib.parse, sys; print(urllib.parse.quote_plus(sys.argv[1])) "string to encode"
pour un liner sur la ligne de commandeEssayer les demandes au lieu de urllib et vous n'avez pas besoin de s'embêter avec la fonction urlencode!
EDIT:
Si vous avez besoin d' commandé des paires nom-valeur ou plusieurs valeurs pour un nom, puis définissez les paramètres comme suit:
au lieu d'utiliser un dictionnaire.
Contexte
Problème
Solution
Pièges
Exemple
La suite est une solution complète, y compris la façon de traiter avec des pièges à éviter.
Python 3:
urllib.l'analyser.quote_plus(string, coffre-fort=", encoding=None, des erreurs=None)
urllib.parse.quote()
moi-même, car il utilise%20
plutôt que+
.Noter que le urllib.urlencode ne pas toujours faire l'affaire. Le problème est que certains services de soins à propos de l'ordre des arguments, ce qui est perdue lorsque vous créez le dictionnaire. Pour de tels cas, urllib.quote_plus est mieux, comme Ricky suggéré.
>>> import urllib >>> urllib.urlencode([('name', 'brandon'), ('uid', 1000)]) 'name=brandon&uid=1000'
Essayez ceci:
urlencode
ne fonctionne pas car il ne fonctionne que sur des dictionnaires.quote_plus
n'avez pas de produire de bons résultats.my string
àmy%20string
. Votre solution fonctionne comme un charme pour cette!%20
au lieu de+
. MerciEn Python 3, il a travaillé avec moi
pour de futures références (ex: pour python3)
'c:/2 < 3'
sur Windows est'///C://2%20%3C%203'
. Je veux quelque chose qui serait juste sortie'c:/2%20%3C%203'
.Pour une utilisation dans les scripts/programmes qui ont besoin de soutien python 2 et 3, les six module fournit des devis et urlencode fonctions:
Si le urllib.l'analyser.la fonction urlencode( ) est de vous donner les erreurs , puis Essayez de la urllib3 module .
La syntaxe est comme suit :
Une autre chose qui pourrait ne pas avoir été déjà mentionné est que
urllib.urlencode()
encoder des valeurs vides dans le dictionnaire de la chaîneNone
au lieu d'avoir ce paramètre est absent. Je ne sais pas si c'est typiquement désiré ou pas, mais ne correspond pas à mon cas d'utilisation, donc je dois utiliserquote_plus
.