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

b = eval(a)

print b

[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
[Finished in 0.2s]

a = "{1: 'a', 2: 'b'}"
b = eval(a)
print b
print type(b)

{1: 'a', 2: 'b'}
<type 'dict'>
[Finished in 0.2s]

-----风险-------

eval强大的背后,是巨大的安全隐患!!! 比如说,用户恶意输入下面的字符串

open(r'D://filename.txt', 'r').read()

__import__('os').system('dir')

__import__('os').system('rm -rf /etc/*')

a = "__import__('os').system('dir')"
b = eval(a)
print b
print type(b)

Volume in drive D has no label.
Volume Serial Number is 66B4-8B5C

Directory of D:\AlamTW\study\python

13/06/2017 PM 03:23 <DIR> .
13/06/2017 PM 03:23 <DIR> ..
14/03/2017 PM 05:20 1,388 20170314-1.py
01/04/2017 PM 03:20 2,180 20170401.py
16/05/2017 PM 02:47 386 20170516unittest.py
21/04/2017 AM 10:57 147 testDemo.yaml
21/04/2017 AM 11:18 525 yaml_python.py
14/03/2017 PM 01:44 <DIR> __pycache__
38 File(s) 27,575 bytes
8 Dir(s) 390,064,582,656 bytes free
0
<type 'int'>
[Finished in 0.3s]

------所以用ast.literal_eval代替----

import ast

a = "open('test.py').read()"
# b = eval(a)
b = ast.literal_eval(a)
print b
print type(b)

ValueError: malformed string

Python eval 作用和风险 (string 转为dict list tuple)建议用“ast.literal_eval”的更多相关文章

  1. Python json 读取 json 文件并转为 dict

    Python json 读取 json 文件并转为 dict 在 D 盘 新建 test.json: { "test": "测试\n换行", "dic ...

  2. Python 字符串转换为字典(String to Dict)

    一.需求 为了处理从redis中拿到的value,如下 {"appId":"ct","crawlSts":false,"healt ...

  3. python 数据类型: 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary

    #python中标准数据类型 字符串String 列表List 元组Tuple 集合Set 字典Dictionary 铭记:变量无类型,对象有类型 #单个变量赋值 countn00 = '; #整数 ...

  4. python string和dict转换

    字典(dict)转为字符串(string) 我们可以比较容易的将字典(dict)类型转为字符串(string)类型. 通过遍历dict中的所有元素就可以实现字典到字符串的转换: for key, va ...

  5. Python eval()函数的用法

    Python eval()函数的用法 eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果.所以,结合math当成一个计算器很好用. eval()函数常见作用有 ...

  6. Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字符串类型(string)

    关于Python的字符串处理也如其他语言一样属于重点中的重点,主要是牵扯到的函数和内容较为多和乱一些.关于什么是字符串,Python中的定义是:以单引号或者双引号括起来的任意文本. 1.   字符串的 ...

  7. Python:eval的妙用和滥用

    时间 2014-07-08 13:05:24 CSDN博客 原文  http://blog.csdn.net/zhanh1218/article/details/37562167 主题 Python ...

  8. python eval()内置函数

    python有一个内置函数eval(),可以将字符串进行运行. 通过help(eval)查看帮助文档 Help on built-in function eval in module builtins ...

  9. Python eval 函数用途

    Python eval 函数用途: eval 函数可将字符串转换成列表,元组和字典 实例如下: 可以把list,tuple,dict和string相互转化. ##################### ...

随机推荐

  1. 使用Ant项目打包

    一.前沿 前段时间公司为了做一个新闻发布系统,就使用了开源的JEECMS系统,(非人类啊,泪~~~),项目不是maven构建的,项目的打包部署非常的麻烦,没办法只能使用Ant,Ant是比较古老的打包部 ...

  2. JS中event.preventDefault()取消默认事件能否还原?

    参考知乎讨论:https://www.zhihu.com/question/21891734

  3. C#之Raw Socket实现网络封包监视

    同Winsock1相比,Winsock2最明显的就是支持了Raw Socket套接字类型,使用Raw Socket,可把网卡设置成混杂模式,在这种模式下,我们可以收到网络上的IP包,当然包括目的不是本 ...

  4. mongodb聚合(转)

    聚合 是泛指各种可以处理批量记录并返回计算结果的操作.MongoDB提供了丰富的聚合操作,用于对数据集执行计算操作.在 mongod 实例上执行聚合操作可以大大简化应用的代码,并降低对资源的消耗. 聚 ...

  5. 常见BUG问题汇总[待更新]

    1.字符串数据库长度问题,特别是与java接口对接的过程中要注意 2.存储数据库之前所有的数据都需要在存储前进行验证

  6. Android Volley框架的使用(四)图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)

    在开发安卓应用中避免不了要使用到网络图片,获取网络图片很简单,但是需要付出一定的代价——流量.对于少数的图片而言问题不大,但如果手机应用中包含大量的图片,这势必会耗费用户的一定流量,如果我们不加以处理 ...

  7. 倍福TwinCAT(贝福Beckhoff)应用教程11.1 TwinCAT应用小程序1 贝福IO模块介绍

    EL1002,EL1004,EL1008都是数字输入模块(2个点,4个点,8个点),输入高的范围是15V到30V,低的范围是-3V到5V         EL2002,EL2004,EL2008都是数 ...

  8. POJ Cow Exhibition

    题目链接:Click Here~ 题目意思自己看吧. 算法分析: 对我来想是没有想到,最后看别人的博客才知道的.要把当中的一个条件当作体积.由于两个条件都存在负数,所以还要先保证最后不会再体积中出现负 ...

  9. JavaScript | 基础表单验证(纯Js)

    ———————————————————————————————————————————— 基础表单验证(纯js) - - - - - - - - - - - - - - - - - - - - - - ...

  10. php文件加载路径

    <?php require('reusable.php'); echo "相对路径加载<br/>"; /* ./ 表示当前文件所在的目录 ../ 表示当前文件所在 ...