将字典的字符串表示形式转换为字典
考虑将字典的字符串表示形式转换为字典的任务。例如:
s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"
人们可能会想使用 eval 函数来实现此目的,但最好避免 eval,因为它存在潜在的安全风险。
相反,请考虑使用Python标准库提供的ast.literal_eval函数:
import ast dictionary = ast.literal_eval(s)
ast.literal_eval函数安全地求值包含 Python 表达式的字符串。它只允许字符串、数字、元组、列表、字典、布尔值和 None 等文字结构,确保表达式可以安全地求值。
此方法比使用 eval 更安全,因为它会阻止执行可能危害您的系统的任意代码。例如:
# Dangerous example: eval("shutil.rmtree('mongo')") # Safe example: ast.literal_eval("shutil.rmtree('mongo')")
在第一个示例中,eval 将字符串作为 Python 代码执行,这会导致错误,因为 mongo 不是有效目录。在第二个示例中,ast.literal_eval 安全地将字符串计算为文字表达式,并引发错误,指示该字符串格式错误。
以上是如何在 Python 中安全地将字典的字符串表示形式转换为字典?的详细内容。更多信息请关注PHP中文网其他相关文章!