не может urllib.urlencode URL в Python - PullRequest
31 голосов
/ 15 октября 2011

Почему я получаю эту ошибку при попытке urlencode этой строки

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

Ответы [ 3 ]

48 голосов
/ 15 октября 2011

Это не то, что делает эта функция:

urlencode(query, doseq=0)
    Encode a sequence of two-element tuples or dictionary into a URL query string.

Вы ищете urllib.quote(callback)?

15 голосов
/ 15 октября 2011

Python не является PHP.Вы хотите urllib.quote() вместо.

10 голосов
/ 24 февраля 2015

urlencode ()

Эта функция кодирует только двухэлементные кортежи или словарь.

  >>> import urllib  
  >>> dict = { 'First_Name' : 'Jack', 'Second_Name' : "West"}
  >>> urllib.urlencode(dict)
  'First_Name=Jack&Second_Name=West

quote_plus ()

Эта функция кодирует строку URL

  >>> import urllib   
  >>> url ="https://www.google.com/"
  >>> urllib.quote_plus(url)
  'https%3A%2F%2Fwww.google.com%2F'
...