1 eval
1.1 字符串型数据还原本身类型
python中,eval可以将字符串型的list,tuple,dict转变成原有的类型。
即,eval可以把数据还原成它本身或者是能够转化成的数据类型。
//string 转 list
>>> str_list='[1,2,3,4]'
>>> eva_list=eval(str_list)
>>> str_list;eva_list
'[1,2,3,4]'
[1, 2, 3, 4]
>>> type(str_list);type(eva_list)
<type 'str'>
<type 'list'>
//string 转 tuple
>>> str_tuple='(1,2,3)'
>>> eval_tuple=eval(str_tuple)
>>> str_tuple;eval_tuple
'(1,2,3)'
(1, 2, 3)
>>> type(str_tuple);type(eval_tuple)
<type 'str'>
<type 'tuple'>
//string 转 dict
>>> str_dict="{'name':'nihao'}"
>>> eval_dict=eval(str_dict)
>>> str_dict;eval_dict
"{'name':'nihao'}"
{'name': 'nihao'}
>>> type(str_dict);type(eval_dict)
<type 'str'>
<type 'dict'>
1.2 字符串型数据进行运算
>>> ret=eval(raw_input('请输入字符串:'))
请输入字符串:1+1
>>> ret
2
1.3 字符串型语句命令
只要eval能解析的字符串,都会当做合法的表达式或命令执行,而不顾可能带来的后果。
>>> open(r'E://filename.txt','r').read
>>> __import__('os').system('dir')
>>> __import__('os').system('rm -rf /etc/*')
eval强大的背后,是巨大的安全隐患。比如上面的删除文件。
所以,才有了ast.literal_eval。
2 literal_eval
ast.literal_eval(),先判断执行的内容是不是合适的python类型,如果是则执行,否则就不执行。
这样可以大大降低系统的危险性,所以,对字符串进行类型转换的时候,最好是用ast.literal_eval()函数。
2.1 合适数据类型
# 合适数据类型
>>> ast.literal_eval('[1,2,3]')
[1, 2, 3]
>>> ast.literal_eval('(1,2,3)')
(1, 2, 3)
>>> ast.literal_eval("{'name':'nihao'}")
{'name': 'nihao'}
2.2 不合适数据类型
# 不合适数据类型
>>> ast.literal_eval('1+1')
Traceback (most recent call last):
File "
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
数据
+关注
关注
8文章
7203浏览量
89854 -
python
+关注
关注
56文章
4811浏览量
85119 -
EVAL
+关注
关注
0文章
34浏览量
8552
发布评论请先 登录
相关推荐
请问EVAL-ADISZ和EVAL-ADIS2有哪些区别?
尊敬的工程师你好,我现在想评估16735和16488A的性能并验证我的算法,请问EVAL-ADISZ和EVAL-ADIS2的区别除了后者需要单独分线板外,还有哪些区别,例如在传输速度、
发表于 08-08 09:39
AST3TQ评估板旨在促进AST3TQ系列TCXO和VCTCXO的电气性能测试
AST3TQ-EVAL,AST3TQ评估板旨在促进AST3TQ系列TCXO和VCTCXO的电气性能测试。客户只需在所提供的焊盘图形上焊接AST3TQ器件,并将+ 3.3V连接到标记为V
发表于 07-17 08:57
ASMT-JR30-AST01 3W迷你大功率LED
电子发烧友网为你提供Broadcom(ti)ASMT-JR30-AST01相关产品参数、数据手册,更有ASMT-JR30-AST01的引脚图、接线图、封装手册、中文资料、英文资料,ASMT-JR30-AST01真值表,ASMT-
发表于 07-04 11:24
![ASMT-JR30-<b class='flag-5'>AST</b>01 3W迷你大功率LED](https://file.elecfans.com/web1/M00/98/60/pIYBAF0T0Z6AVpKcAAAL-mN8cLY751.jpg)
ASMT-AR30-AST00 3W大功率LED
电子发烧友网为你提供Broadcom(ti)ASMT-AR30-AST00相关产品参数、数据手册,更有ASMT-AR30-AST00的引脚图、接线图、封装手册、中文资料、英文资料,ASMT-AR30-AST00真值表,ASMT-
发表于 07-04 11:20
![ASMT-AR30-<b class='flag-5'>AST</b>00 3W大功率LED](https://file.elecfans.com/web1/M00/98/63/pIYBAF0T79eAFkTxAAC2wItML2s782.jpg)
ASMT-AR00-AST00 1W大功率LED
电子发烧友网为你提供Broadcom(ti)ASMT-AR00-AST00相关产品参数、数据手册,更有ASMT-AR00-AST00的引脚图、接线图、封装手册、中文资料、英文资料,ASMT-AR00-AST00真值表,ASMT-
发表于 07-04 10:35
![ASMT-AR00-<b class='flag-5'>AST</b>00 1W大功率LED](https://file.elecfans.com/web1/M00/99/7B/pIYBAF0WjTGAckDUAAC2wItML2s069.jpg)
ASMT-AR00-AST01 1W大功率LED
电子发烧友网为你提供Broadcom(ti)ASMT-AR00-AST01相关产品参数、数据手册,更有ASMT-AR00-AST01的引脚图、接线图、封装手册、中文资料、英文资料,ASMT-AR00-AST01真值表,ASMT-
发表于 07-04 10:35
![ASMT-AR00-<b class='flag-5'>AST</b>01 1W大功率LED](https://file.elecfans.com/web1/M00/99/7A/pIYBAF0Wh8eALzFpAAC2wItML2s562.jpg)
ASMT-JR10-AST01 1W迷你大功率LED
电子发烧友网为你提供Broadcom(ti)ASMT-JR10-AST01相关产品参数、数据手册,更有ASMT-JR10-AST01的引脚图、接线图、封装手册、中文资料、英文资料,ASMT-JR10-AST01真值表,ASMT-
发表于 07-04 10:32
![ASMT-JR10-<b class='flag-5'>AST</b>01 1W迷你大功率LED](https://file.elecfans.com/web1/M00/99/7D/pIYBAF0Wp9OAbJilAADHPJKDzSk442.jpg)
基于AST3TQ-EVAL晶体振荡器的参考设计
View the reference design for AST3TQ-EVAL. http://www.elecfans.com/soft/ has thousands of reference designs to help bring your project to life.
发表于 07-01 17:52
•12次下载
![基于<b class='flag-5'>AST3TQ-EVAL</b>晶体振荡器的参考设计](https://file.elecfans.com/web2/M00/05/13/pYYBAGDdkEqAeYYfAABcCGJA0rc959.jpg)
评论