当前位置: 代码网 > it编程>前端脚本>Python > python中literal_eval函数的使用小结

python中literal_eval函数的使用小结

2025年08月19日 Python 我要评论
基本用法from ast import literal_eval# 将字符串转换为python对象string_list = "[1, 2, 3]"real_list = literal_eval(s

基本用法

from ast import literal_eval

# 将字符串转换为python对象
string_list = "[1, 2, 3]"
real_list = literal_eval(string_list)
print(real_list)  # 输出: [1, 2, 3]
print(type(real_list))  # 输出: <class 'list'>

string_dict = "{'name': 'alice', 'age': 25}"
real_dict = literal_eval(string_dict)
print(real_dict)  # 输出: {'name': 'alice', 'age': 25}
print(type(real_dict))

与 eval() 的区别

1、安全性:literal_eval 只能解析 python 字面量结构(字符串、数字、元组、列表、字典、布尔值和 none),不会执行任意代码,因此比 eval() 安全得多。

# eval() 会执行任何代码 - 不安全!
eval("__import__('os').system('rm -rf /')")  # 危险!

# literal_eval() 会拒绝执行非字面量表达式
literal_eval("__import__('os').system('rm -rf /')")  # 会引发 valueerror

2、功能限制:literal_eval 不能计算表达式或调用函数,只能处理基本的 python 数据结构。

支持的数据类型

literal_eval 可以安全地评估以下 python 字面量结构:

1、字符串
2、数字(整数、浮点数、复数)
3、元组
4、列表
5、字典
6、布尔值(true/false)
7、none

使用场景

1、安全地从字符串加载数据结构:当需要从外部源(如配置文件、用户输入)加载数据时。

2、替代 pickle/json:对于简单的数据结构,比 pickle 安全,比 json 更灵活(json 不支持所有 python 数据类型)。

3、配置文件解析:当配置需要包含复杂数据结构时。

注意事项

1、虽然比 eval() 安全,但仍应谨慎处理不受信任的输入。

2、对于非常大的数据结构,可能会有性能问题。

3、不支持 python 3 的字节字面量(如 b’bytes’)。

到此这篇关于python中literal_eval函数的使用小结的文章就介绍到这了,更多相关python literal_eval 内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com