繁体   English   中英

URL如何编码成Python 3?

[英]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'

你误读了文档。 你需要做两件事:

  1. 引用字典中的每个键和值,以及
  2. 将它们编码为 URL

幸运的是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM