Pourquoi est-ce que j'obtiens cette erreur lorsque j'essaie de coder en url cette chaîne
>>> callback = "http://localhost/application/authtwitter?twitterCallback"
>>> urllib.urlencode(callback)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/urllib.py", line 1261, in urlencode
raise TypeError
TypeError: not a valid non-string sequence or mapping object
4 réponses
Ce n'est pas ce que fait cette fonction:
urlencode(query, doseq=0)
Encode a sequence of two-element tuples or dictionary into a URL query string.
Recherchez-vous urllib.quote(callback)
?
Python 3
Dans Python 3, les fonctionnalités de citation et d'urlencode se trouvent dans le module {{X0} }.
Quelques exemples:
(fin de citation
Urllib.parse. devis
Remplacez les caractères spéciaux dans la chaîne à l'aide de l'échappement% xx.
>>> import urllib.parse
>>> urllib.parse.quote('https://www.google.com/')
'https%3A//www.google.com/'
De même, pour inverser cette opération, utilisez urllib.parse.unquote:
Urllib.parse. unquote
Remplacez% xx les échappements par leur équivalent à un seul caractère.
>>> import urllib.parse
>>> urllib.parse.unquote('https%3A//www.google.com/')
'https://www.google.com/'
(un) quote_plus
Urllib.parse. quote_plus
Comme quote (), mais remplace également les espaces par des signes plus, comme requis pour citer des valeurs de formulaire HTML lors de la création d'une chaîne de requête pour entrer dans une URL.
>>> import urllib.parse
>>> urllib.parse.quote_plus('https://www.google.com/')
'https%3A%2F%2Fwww.google.com%2F'
De même, pour inverser cette opération, utilisez urllib.parse.unquote_plus:
Urllib.parse. unquote_plus
Comme unquote (), mais remplacez également les signes plus par des espaces, comme requis pour la non-cotation des valeurs de formulaire HTML.
>>> import urllib.parse
>>> urllib.parse.unquote_plus('https%3A%2F%2Fwww.google.com%2F')
'https://www.google.com/'
Urlencode
Urllib.parse. urlencode
>>> import urllib.parse
>>> d = {'url': 'https://google.com', 'event': 'someEvent'}
>>> urrlib.parse.urlencode(d)
'url=https%3A%2F%2Fgoogle.com&event=someEvent'
Python n'est pas PHP. Vous voulez plutôt urllib.quote()
à la place.
urlencode ()
Cette fonction code uniquement les tuples à deux éléments ou le dictionnaire.
>>> import urllib
>>> dict = { 'First_Name' : 'Jack', 'Second_Name' : "West"}
>>> urllib.urlencode(dict)
'First_Name=Jack&Second_Name=West
quote_plus ()
Cette fonction encode la chaîne d'url
>>> import urllib
>>> url ="https://www.google.com/"
>>> urllib.quote_plus(url)
'https%3A%2F%2Fwww.google.com%2F'
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.