我有一个字节类型的对象,像这样:

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

最佳答案

您只需要ast.literal_eval即可。没有比这更好的了。除非您在字符串中专门使用非Python dict语法,否则无需弄乱JSON。

# 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))

参见答案here。它还详细说明ast.literal_evaleval更安全。

10-07 16:30