[英]How to URL encode in Python 3?
我试图按照文档进行操作,但无法在Python 3
中使用urlparse.parse.quote_plus()
:
from urllib.parse import urlparse
params = urlparse.parse.quote_plus({'username': 'administrator', 'password': 'xyz'})
我得到
AttributeError: 'function' object 没有属性 'parse'
你误读了文档。 你需要做两件事:
幸运的是urllib.parse.urlencode
在一个步骤中完成了这两件事,这就是您应该使用的函数。
from urllib.parse import urlencode, quote_plus
payload = {'username':'administrator', 'password':'xyz'}
result = urlencode(payload, quote_via=quote_plus)
# 'password=xyz&username=administrator'
对于 Python 3,您可以尝试使用quote
而不是quote_plus
:
import urllib.parse
print(urllib.parse.quote("http://www.sample.com/"))
结果:
http%3A%2F%2Fwww.sample.com%2F
或者:
from requests.utils import requote_uri
requote_uri("http://www.sample.com/?id=123 abc")
结果:
'https://www.sample.com/?id=123%20abc'
您正在寻找urllib.parse.urlencode
import urllib.parse
params = {'username': 'administrator', 'password': 'xyz'}
encoded = urllib.parse.urlencode(params)
# Returns: 'username=administrator&password=xyz'
我猜我有神奇的 Python3 版本
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib.parse
>>> print(urllib.parse.quote("What the heck this is a test!"))
What%20the%20heck%20this%20is%20a%20test%21
>>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.