不能在python中urllib.urlencode一个URL

Bil*_*ull 34 python urllib urlencode

为什么我在尝试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
Run Code Online (Sandbox Code Playgroud)

ret*_*ile 51

这不是那个功能的作用:

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

你在找urllib.quote(callback)

  • 这个答案仅适用于Python 2。对于Python 3,它是urllib.parse.quote。您可以添加一个附录吗? (2认同)

Ign*_*ams 17

Python不是PHP.你想要的urllib.quote().


ncw*_*ncw 11

蟒蛇 3

在 Python 3 中,quote 和 urlencode 功能位于模块urllib.parse.

一些例子:

(un) 引用

urllib.parse。引用

使用 %xx 转义符替换字符串中的特殊字符。

>>> import urllib.parse
>>> urllib.parse.quote('https://www.google.com/')
'https%3A//www.google.com/'
Run Code Online (Sandbox Code Playgroud)

同样,要反转此操作,请使用 urllib.parse.unquote:

urllib.parse。取消引用

用等效的单字符替换 %xx 转义符。

>>> import urllib.parse
>>> urllib.parse.unquote('https%3A//www.google.com/')
'https://www.google.com/'
Run Code Online (Sandbox Code Playgroud)

(un)quote_plus

urllib.parse。报价加

与quote()类似,但也用加号替换空格,这是在构建查询字符串以进入URL时引用HTML表单值所必需的。

>>> import urllib.parse
>>> urllib.parse.quote_plus('https://www.google.com/')
'https%3A%2F%2Fwww.google.com%2F'
Run Code Online (Sandbox Code Playgroud)

同样,要反转此操作,请使用 urllib.parse.unquote_plus:

urllib.parse。unquote_plus

与 unquote() 类似,但也用空格替换加号,这是取消引用 HTML 表单值所需的。

>>> import urllib.parse
>>> urllib.parse.unquote_plus('https%3A%2F%2Fwww.google.com%2F')
'https://www.google.com/'
Run Code Online (Sandbox Code Playgroud)

网址

urllib.parse。网址

>>> import urllib.parse
>>> d = {'url': 'https://google.com', 'event': 'someEvent'}
>>> urrlib.parse.urlencode(d)
'url=https%3A%2F%2Fgoogle.com&event=someEvent'
Run Code Online (Sandbox Code Playgroud)


Vic*_*cky 10

urlencode()

此函数仅编码两元素元组或字典.

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

quote_plus()

这个函数编码url字符串

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