【发布时间】:2018-08-17 11:35:56
【问题描述】:
我有一个这样的字节类型对象:
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 -
您在此处发布的代码不会引发该异常。事实上,它几乎可以按照您所说的去做(以处理引号字符时的一些错误为模——例如,您最终会得到一个像
" 'two'"这样的键而不是"two")。 -
同时,这个输入是从哪里来的?将 Python dict 的
repr和encode-ing 转换为 UTF-8 确实不是存储稍后要加载的数据的好方法。最好使用 JSON 或 Pickle 之类的东西。 -
@Aran-Fey 字节与字符串不同
标签: python string dictionary