在 Python 中编码对我来说是新的,我正在努力理解它。如果这已经被问到并已经回答了,我们深表歉意。
我正在尝试对 Python 列表进行编码并对其进行解码。当我尝试直接对列表进行编码时,遇到如下错误。
>>> my_list = [1, 2, 3]
>>> encoded_list = base64.b64encode(my_list)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/base64.py", line 54, in b64encode
encoded = binascii.b2a_base64(s)[:-1]
TypeError: b2a_base64() argument 1 must be string or buffer, not list
Run Code Online (Sandbox Code Playgroud)
为了修复它,我将列表对象转换为字符串并将其传递给 encode 函数,并且我能够成功对其进行编码。
>>> encoded_list = base64.b64encode(str(my_list))
>>> encoded_list
'WzEsIDIsIDNd'
Run Code Online (Sandbox Code Playgroud)
当我尝试解码它时,我得到一个解码后的字符串,如下所示。
>>> decoded_list = base64.b64decode(encoded_list)
>>> decoded_list
'[1, 2, 3]'
>>> type(decoded_list)
<type 'str'>
Run Code Online (Sandbox Code Playgroud)
但是我的初衷是对列表进行编码和解码,而不是将列表转换为字符串,然后将字符串转换为列表。
很确定这不是对 dict 或列表等对象进行编码的正确方法。如果是这种情况,有人可以启发我如何在 Python 中编码/解码非字符串对象吗?
非常感谢。