📅  最后修改于: 2023-12-03 15:19:09.152000             🧑  作者: Mango
当我们从网络中获取的数据是 bytes 类型,需要将其转换为 dict 类型,以便于后续的处理。在 Python 中,我们可以使用内置函数 eval()
或 ast.literal_eval()
来完成这个任务。
eval()
函数可以将字符串作为表达式执行,因此我们可以将 bytes 类型的数据转换为字符串后使用该函数。下面给出一个示例代码:
b_data = b"{'name': 'John', 'age': 30, 'city': 'New York'}"
str_data = b_data.decode("utf-8")
dict_data = eval(str_data)
print(dict_data)
输出结果为:
{'name': 'John', 'age': 30, 'city': 'New York'}
需要注意的是,使用 eval()
函数时需要确保字符串中只包含 Python 允许的表达式,以避免安全问题。
ast.literal_eval()
函数比 eval()
更加安全,因为它只会解析字面值表达式(literal expressions),而不会执行任何其他 Python 代码。因此,我们可以使用该函数来解析 bytes 类型的数据,示例如下:
import ast
b_data = b"{'name': 'John', 'age': 30, 'city': 'New York'}"
str_data = b_data.decode("utf-8")
dict_data = ast.literal_eval(str_data)
print(dict_data)
输出结果和前面的示例一样:
{'name': 'John', 'age': 30, 'city': 'New York'}
需要注意的是,使用 ast.literal_eval()
函数时同样需要确保字符串中只包含 Python 允许的表达式。
综上所述,我们可以使用 eval()
或 ast.literal_eval()
函数将 bytes 类型的字符串转换为 dict 类型,以便于后续的处理。