首页 >后端开发 >Python教程 >如何在 Python 中安全地将字典的字符串表示形式转换为字典?

如何在 Python 中安全地将字典的字符串表示形式转换为字典?

DDD
DDD原创
2024-12-26 10:22:09293浏览

How to Safely Convert String Representations of Dictionaries to Dictionaries in Python?

将字典的字符串表示形式转换为字典

考虑将字典的字符串表示形式转换为字典的任务。例如:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn