如何将字节类型转换为字典

21 浏览
0 Comments

如何将字节类型转换为字典

这个问题已经有了答案:

将字典的字符串表示形式转换为字典

我有一个像这样的bytes类型的对象:

b"{'one': 1, 'two': 2}"

我需要使用Python代码从中获取字典。我按以下方式将它转换为字符串,然后转换为字典。

string = dictn.decode("utf-8")
print(type(string))
>> <class 'str'>
d = dict(toks.split(":") for toks in string.split(",") if toks)

但我得到了以下错误:

------> d = dict(toks.split(":") for toks in string.split(",") if toks)
TypeError: 'bytes' object is not callable

admin 更改状态以发布 2023年5月21日
0
0 Comments

你所需要的只是 ast.literal_eval。没必要使用 JSON,除非你的字符串是使用非 Python 字典语法。

# python3
import ast
byte_str = b"{'one': 1, 'two': 2}"
dict_str = byte_str.decode("UTF-8")
mydata = ast.literal_eval(dict_str)
print(repr(mydata))

可以在此处查看答案。它还详细说明了 ast.literal_evaleval 更安全。

0
0 Comments

我认为还需要解码才能得到一个合适的字典。

a= b"{'one': 1, 'two': 2}"
ast.literal_eval(a.decode('utf-8'))
**Output:** {'one': 1, 'two': 2}

接受的答案产生了

a= b"{'one': 1, 'two': 2}"
ast.literal_eval(repr(a))
**output:**  b"{'one': 1, 'two': 2}"

literal_eval 对我很多代码并没有做好,所以我个人更喜欢使用 json 模块。

import json
a= b"{'one': 1, 'two': 2}"
json.loads(a.decode('utf-8'))
**Output:** {'one': 1, 'two': 2}

0