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
38
BillPull 15 oct. 2011 à 01:57

4 réponses

Meilleure réponse

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)?

55
retracile 14 oct. 2011 à 22:02

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'
4
ncw 21 août 2019 à 22:49

Python n'est pas PHP. Vous voulez plutôt urllib.quote() à la place.

18
maazza 4 janv. 2017 à 13:31

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'
11
Vicky 24 févr. 2015 à 08:11
7774003