码迷,mamicode.com
首页 > 编程语言 > 详细

python eval和literal_eval

时间:2016-08-14 18:59:50      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

eval是python中一个相当智能的函数,把参数当成表达式,进行最大限度的解析,

比如:

a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"

b = eval(a)

b
Out[3]: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]

type(b)
Out[4]: list

a = "{1: ‘a‘, 2: ‘b‘}"

b = eval(a)

b
Out[7]: {1: ‘a‘, 2: ‘b‘}

type(b)
Out[8]: dict

a = "([1,2], [3,4], [5,6], [7,8], (9,0))"

b = eval(a)

b
Out[11]: ([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))

从以上可以看出,eval相当的好用,但是它也能解析一些输入命令,比如:

eval("__import__(‘os‘).system(‘dir‘)")

这样写会将当前目录下的文件全都显示出来,如果换成删除,那麻烦就大了。

所以,很多时候我们需要在转换前先检查下表达式的合法性,或者直接使用literal_eval,这个函数会自动的检查安全性和合法性,如果有问题就会直接抛出异常,使用literal_eval前要先导入ast。

python eval和literal_eval

标签:

原文地址:http://www.cnblogs.com/likui360/p/5770601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!