我有一个字节类型的对象,像这样:
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_eval
比eval
更安全。