eval与ast.literal_eval

原文:https://blog.csdn.net/sun2333/article/details/82418326

1、eval可以字符串型的list,tuple,dict转变成原有的类型

(1)string <=> list

In [1]: s = ‘[1, 2, 3, 4]‘

In [2]: l = eval(s)

In [3]: s
Out[3]: ‘[1, 2, 3, 4]‘

In [4]: l
Out[4]: [1, 2, 3, 4]

In [5]: type(s)
Out[5]: str

In [6]: type(l)
Out[6]: list

(2)string <=> tuple

In [9]: s = ‘(1, 2, 3)‘

In [10]: l = eval(s)

In [11]: s
Out[11]: ‘(1, 2, 3)‘

In [12]: l
Out[12]: (1, 2, 3)

In [13]: type(s)
Out[13]: str

In [14]: type(l)
Out[14]: tuple

(3)string <=> dict

In [15]: s = "{‘key‘: ‘value‘}"

In [16]: d = eval(s)

In [17]: s
Out[17]: "{‘key‘: ‘value‘}"

In [18]: d
Out[18]: {‘key‘: ‘value‘}

In [19]: type(s)
Out[19]: str

In [20]: type(d)
Out[20]: dict

2、ast.literal_eval:则会判断需要计算的内容计算后是不是合法的python类型,如果是则进行运算,否则就不进行运算

只会执行合法的python类型,会降低系统风险

原文地址:https://www.cnblogs.com/CXMS/p/12561507.html

时间: 2024-10-28 17:04:08

eval与ast.literal_eval的相关文章

python中使用eval() 和 ast.literal_eval()的区别

eval函数在python中做数据类型的转换还是很有用的.它的作用就是把数据还原成它本身或者是能够转化成的数据类型. 那么eval和ast.literal_val()的区别是什么呢? eval在做计算前并不知道需要转化的内容是不是合法的(安全的)python数据类型.只是在调用函数的时候去计算.如果被计算的内容不是合法的python类型就会抛出异常. ast.literal则会判断需要计算的内容计算后是不是合法的python类型,如果是则进行运算,否则就不进行运算. --------------

Python:eval的妙用和滥用

eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果. so,结合math当成一个计算器很好用. 其他用法,可以把list,tuple,dict和string相互转化.见下例子: 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 = &qu

Python函数-eval()

eval(source[, globals[, locals]]) 作用: 将字符串str当成有效的表达式来求值并返回计算结果.参数:source:一个Python表达式或函数compile()返回的代码对象:globals:可选.必须是dictionary:locals:可选.任意map对象. 实例: 1 ################################################# 2 字符串转换成列表 3 >>>a = "[[1,2], [3,4],

Python中eval带来的潜在风险

0x00 前言 eval是Python用于执行python表达式的一个内置函数,使用eval,可以很方便的将字符串动态执行.比如下列代码: >>> eval("1+2") 3 >>> eval("[x for x in range(10)]") [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 当内存中的内置模块含有os的话,eval同样可以做到命令执行: >>> import os >>

python函数每日一讲 - eval函数

函数定义: eval(expression, globals=None, locals=None) 将字符串str当成有效的表达式来求值并返回计算结果.globals和locals参数是可选的,如果提供了globals参数,那么它必须是dictionary类型:如果提供了locals参数,那么它可以是任意的map对象. python的全局名字空间存储在一个叫globals()的dict对象中:局部名字空间存储在一个叫locals()的dict对象中.我们可以用print (locals())来查

python eval()内置函数

python有一个内置函数eval(),可以将字符串进行运行. 通过help(eval)查看帮助文档 Help on built-in function eval in module builtins: eval(source, globals=None, locals=None, /) Evaluate the given source in the context of globals and locals. The source may be a string representing a

python自动化之eval()函数

eval()函数说明:将字符串str当成有效的表达式来求值并返回计算结果,即将str转化为list,tuple,dict.例子: a = '[1,2,3,4]' b = '([1,2],[4],"c")' c = '{2,3,4,5}' print(eval(a),type(eval(a))) print(eval(b),type(eval(b))) print(eval(c),type(eval(c))) 输出: [1, 2, 3, 4] <class 'list'> (

深度辨析 Python 的 eval() 与 exec()

Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个. 大部分函数是我们经常使用的,例如 print().open() 与 dir(),而有一些函数虽然不常用,但它们在某些场景下,却能发挥出不一般的作用.内置函数们能够被"提拔"出来,这就意味着它们皆有独到之处,有用武之地. 因此,掌握内置函数的用法,就成了我们应该点亮的技能. 在<Python进阶:如何将字符串常量转为变量?>这篇文章中,

ast模块

有这么一个需求,你想从文件中读取字典,方法有很多,这里用的是ast模块 import ast with open("account","r",encoding="utf8") as read_file: data = ast.literal_eval(read_file.read()) print(type(data)) ##演示结果 C:\python3.5\python.exe D:/qq文件存放地/day9/FTP/测试/测试读取文件.py