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

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

DDD
发布: 2024-12-26 10:22:09
原创
297 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板