📜  python 将 b 字符串转换为 dict - Python (1)

📅  最后修改于: 2023-12-03 15:19:09.152000             🧑  作者: Mango

Python 将 b 字符串转换为 dict

当我们从网络中获取的数据是 bytes 类型,需要将其转换为 dict 类型,以便于后续的处理。在 Python 中,我们可以使用内置函数 eval()ast.literal_eval() 来完成这个任务。

使用 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() 函数

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 类型,以便于后续的处理。