【发布时间】:2021-07-21 08:22:42
【问题描述】:
我正在尝试从 python 的 urllib 编码这个列表。
>>> from urllib.parse import urlencode, unquote
>>> data_to_encode = {'user_ids': [1, 2, 3]}
>>> encoded_url = urlencode(data_to_encode)
>>>
>>> encoded_url
'user_ids=%5B1%2C+2%2C+3%5D'
>>>
>>> unqoute(encoded_url)
'user_ids=[1,+2,+3]'
编码是在元素中插入一个额外的+ 符号。为什么会发生这种情况,我该如何解决这个问题,以便我编码前和解码后的 url 相同?
【问题讨论】:
-
因为
urlencode将空格编码为+,但取消引用仅将%..序列替换回字符,而不是将+替换为空格。 ——相反,你期待什么?你想做什么? -
@deceze 数字上没有前导空格。我玩过,得到了这个:
>>> data_to_encode = {'user_ids':['1','2','3']} >>> encoded_url = urlencode(data_to_encode) >>> unquote(encoded_url) "user_ids=['1',+'2',+'3']" >>> -
@James 不知道你想说什么。列表中的
repr被编码,即[1, 2, 3]转换为字符串'[1, 2, 3]',其中包含空格,编码为+。 -
我最终做到了——希望我的回答能解释 + 的来源。
标签: python url urllib urlencode