当前位置: 首页 > news >正文

python---literal_eval函数

文章目录

  • 基本用法
  • 与 eval() 的区别
  • 支持的数据类型
  • 使用场景
  • 注意事项

literal_eval 是 Python 标准库 ast (Abstract Syntax Trees) 模块中的一个安全函数,用于将包含 Python 字面量表达式的字符串安全地转换为对应的 Python 对象。

基本用法

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’)。

http://www.dtcms.com/a/311610.html

相关文章:

  • Python管道编程解析:构建高效数据流处理框架
  • Redis从入门到实战
  • Effective C++ 条款18:让接口容易被正确使用,不易被误用
  • IOT物联网平台发布,可私有化部署
  • 算法刷题【面试经典150题】
  • 技巧|SwanLab记录PR曲线攻略
  • 【Unity3D实例-功能-移动】小兵移动-通过鼠标点击进行
  • 【微实验】弦振动 MATLAB 物理模型 动画仿真
  • 腕管综合征 : “鼠标手”| “数字时代工伤”,在我国视频终端工作者中患病率达12%到15%。“
  • web:js的模块导出/导入
  • 【编号413】“一带一路”25个港口城市及其周边区域海岸线分类数据
  • 译|Netflix 数据平台运营中基于机器学习自动修复系统
  • 【网络与爬虫 38】Apify全栈指南:从0到1构建企业级自动化爬虫平台
  • 【Android】使用 Intent 传递对象的两种序列化方式
  • RPG增容2.尝试使用MMC根据游戏难度自定义更改怪物属性(三)
  • 推荐系统学习笔记(六)自监督学习
  • 【语音技术】意图与语料
  • gcc-arm-none-eabi安装后,找不到libgcc.a的拉置
  • 边缘计算优化!陌讯轻量化模型实现路面裂缝误检率↓78%
  • 【大模型LLM】大模型训练加速 - 深度混合精度训练(Mixed Precision Training)原理详解
  • 数字化生产管理系统设计
  • Leetcode 11 java
  • Agentic RAG:自主检索增强生成的范式演进与技术突破
  • ADB 查看 CPU 信息、查看内存信息、查看硬盘信息
  • 计算学习理论(PAC学习、有限假设空间、VC维、Rademacher复杂度、稳定性)
  • PHP 与 MySQL 详解实战入门(2)
  • Linux中使用Qwen模型:Qwen Code CLI工具
  • stm32F407 实现有感BLDC 六步换相 cubemx配置及源代码(二)
  • JavaScript将String转为base64 笔记250802
  • 人工智能篇之计算机视觉