ast.literal_eval(转)
eval函数在Python中做数据类型的转换还是很有用的。它的作用就是把数据还原成它本身或者是能够转化成的数据类型。那么eval和ast.literal_val()的区别是什么呢?本文将大家介绍关于Python中函数eval和ast.literal_eval区别的相关资料,需要的朋友可以参考下。
前言
众所周知在Python中,如果要将字符串型的list,tuple,dict转变成原有的类型呢? 这个时候你自然会想到eval. eval函数在python中做数据类型的转换还是很有用的。它的作用就是把数据还原成它本身或者是能够转化成的数据类型.下面来看看示例代码:
string <==> list
string <==> tuple
string <==> dict
也就是说,使用eval可以实现从元祖,列表,字典型的字符串到元祖,列表,字典的转换,此外,eval还可以对字符
串型的输入直接计算。比如,她会将'1+1'的计算串直接计算出结果。
从上面来看,eval功能可谓非常强大,即可以做string与list,tuple,dict之间的类型转换,还可以做计算器使用!更有甚者,可以对她能解析的字符串都做处理,而不顾忌可能带来的后果!所以说eval强大的背后,是巨大的安全隐患!!! 比如说,用户恶意输入下面的字符串
open(r'D://filename.txt', 'r').read()
__import__('os').system('dir')
__import__('os').system('rm -rf /etc/*')
那么eval就会不管三七二十一,显示你电脑目录结构,读取文件,删除文件.....如果是格盘等更严重的操作,她也会照做不误!!!
所以这里就引出了另外一个安全处理方式ast.literal_eval.可以先看下stackoverflow及Python官方关于这个解释!
stackoverflow
Python官方文档
简单点说ast模块就是帮助Python应用来处理抽象的语法解析的。而该模块下的literal_eval()
函数:则会判断需要计算的内容计算后是不是合法的python类型,如果是则进行运算,否则就不进行运算。
比如说上面的计算操作,及危险操作,如果换成了ast.literal_eval()
,都会拒绝执行。
报值错误,不合法的字符串!
而只会执行合法的Python类型,从而大大降低系统的危险性!
所以出于安全考虑,对字符串进行类型转换的时候,最好使用ast.literal_eval()
函数!
总结
以上就是Python中关于eval函数与ast.literal_eval使用的区别介绍(图文)的详细内容,更多请关注php中文网其它相关文章!
转载于:https://www.cnblogs.com/wangbin2188/p/11240797.html
ast.literal_eval(转)相关推荐
- 建议使用更加安全的ast.literal_eval去替代eval
前言 如果大家想要在python中将字符串转换成列表,数字,字典等操作,都会想到使用eval(),确实这个函数很好用,但是它却存在一定的安全性 eval的漏洞 如果用户使用如下的代码 open(r'D ...
- python3 eval安全替代函数ast.literal_eval
一.eval函数 eval()官方文档里面给出来的功能解释是:将字符串string对象转化为有效的表达式参与求值运算返回计算结果. 示例: >>> s='8*8' >>& ...
- ast.literal_eval
eval函数在python中做数据类型的转换还是很有用的.它的作用就是把数据还原成它本身或者是能够转化成的数据类型. 那么eval和ast.literal_val()的区别是什么呢? eval在做计算 ...
- python3 eval安全替代函数ast.literal_eval的区别
python3 eval安全替代函数ast.literal_eval 一.eval函数 eval()官方文档里面给出来的功能解释是:将字符串string对象转化为有效的表达式参与求值运算返回计算结果. ...
- python查询mysql decimal报错_python读取MySQL数据表时,使用ast模块转换decimal格式数据的坑...
概述 MySQL中常用的数据格式有tinyint().int().float().double().decimal() .varchar.enum().datetime;小数格式中decimal比较常 ...
- python利用xlrd模块读取xls表格选中某列提取全部数值,使用re去除英文字母,用ast将str类型转换成list
python利用xlrd模块读取xls表格选中某列提取全部数值,使用re去除英文字母,用ast将str类型转换成list import ast # 获取xls表中的代码并去重 import xlrd ...
- Python 将字符串转为字典
引言 在工作中遇到一个小问题,需要将一个 Python 的字符串转为字典,比如字符串: user_info = '{"name" : "john", " ...
- python 字符串 转 dict
比直接eval更好的方法>>>import ast >>>ast.literal_eval("{'muffin' : 'lolz', 'foo' : 'k ...
- python将string转换为json_python -- 将string转换成dict的方法
装载自:http://smilejay.com/2014/10/convert_string_to_dict_python/ 我将数据库连接相关的一些用户名/密码/host/port等各种东西作为一个 ...
最新文章
- B树、B+树其实很简单,看不懂你找我
- DIET:Dual Intent and Entity Transformer
- windows SOCKET编程
- matlab遗传算法无人机问题,基于改进遗传算法的无人机路径规划
- 使用TR1的智能指针
- ActionT 无参数委托详解
- 什么是BusyBox?
- linux ps 命令使用
- python-演练-通过描述符来控制另一个类的实例化参数
- 卡尔曼滤波算法及C语言实现(转载)
- js做的flash形式的幻灯图片
- php入门代码 基础慕课,php基础入门
- arcpy 创建弧度制与十进制互换的个人工具箱
- Activiti流程实例管理
- C#:String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}...
- CUDA优化之PReLU性能调优
- 不知名程序员金山云大米云主机体验日志
- [Windows]Win10/Win11切换专业工作站版本
- HttpStatus499
- 关于ttyS与ttySAC
热门文章
- 计算机如何查找目标,如何使用命令行查找计算机地理位置? | MOS86
- 布谷鸟沙盒分析静态文件_“案例沙盒方法”喜提国际商学院协会(AACSB)2019年启发式创新奖...
- android h5使用缓存_Android SDK 的 H5 打通方案演进 | 数据采集
- Mac 运行 psql postgres 报错
- 【RK3399Pro学习笔记】六、ROS发布者Publisher的编程实现
- JavaScript HTML DOM
- 将time_t格式的字符串转换成具体的时间, 存放在SystemTime结构体中
- Samba服务全攻略
- Linux中自带正则表达式应用举例
- [react] 在React中如何避免不必要的render?