首页 > 其他分享 >22.函数eval和ast.literal_eval

22.函数eval和ast.literal_eval

时间:2023-10-19 09:34:38浏览次数:32  
标签:22 str1 evalstr1 literal eval print os

函数eval和ast.literal_eval

目录

python中将字符串型的list,tuple,dict转变成原有的类型

eval函数在python中做数据类型的转换还是很有用的。它的作用就是把数据还原成它本身或者是能够转化成的数据类型

把字符串转化为其它数据类型,如字典、列表、元组、集合

将str转list

str1="[1,2,3,4,5]"

evalstr1=eval(str1)
print(type(str1))
print(evalstr1)
print(type(evalstr1))

# 执行结果
<class 'str'>
[1, 2, 3, 4, 5]
<class 'list'>

将str转dict

str1="{'name':'beike','home':'beijing'}"

evalstr1=eval(str1)
print(type(str1))
print(evalstr1)
print(type(evalstr1))

# 执行结果
<class 'str'>
{'name': 'beike', 'home': 'beijing'}
<class 'dict'>

将str转tuple

str1="('name','beike','home','beijing')"

evalstr1=eval(str1)
print(type(str1))
print(evalstr1)
print(type(evalstr1))

# 执行结果
<class 'str'>
('name', 'beike', 'home', 'beijing')
<class 'tuple'>

eval和字典

print(eval('x+y', {'x': 1, 'y': 2}))  # 输出

eval执行str解析

import os 

str1="54+12"

evalstr1=eval(str1)
print(type(str1))
print(evalstr1)
print(type(evalstr1))


print(os.getcwd())

print(eval("os.getcwd()"))

# 直接结果
<class 'str'>
66
<class 'int'>
D:\Note\lcodeNoteCards
D:\Note\lcodeNoteCards

eval的安全问题

可以执行系统的相关操作

import os 

ROOT=os.getcwd()
print(os.getcwd())
print(os.listdir(ROOT))

print(eval("os.listdir(ROOT)"))

# 执行结果
['.git', '.gitignore', '.idea', '.vscode', 'codeC++', 'README.md', 'test2.png', 'testcode']
['.git', '.gitignore', '.idea', '.vscode', 'codeC++', 'README.md', 'test2.png', 'testcode']

eval()将字符串转成表达式并执行,就可以利用其执行系统命令,删除文件等操作

literal_eval()

literal_eval() 函数:会判断需要计算的内容计算后是不是合法的python类型,如果是则进行运算,否则就不进行运算。

从而避免了意外风险的执行系统命令

import ast

str1="('name','beike','home','beijing')"
str2="[1,2,3,4,5]"
evalstr1=eval(str1)
print(type(str1))
print(evalstr1)
print(type(evalstr1))

aststr1=ast.literal_eval(str1)

aststr2=ast.literal_eval(str2)
print(aststr1)
print(aststr2)

# 执行结果
<class 'str'>
('name', 'beike', 'home', 'beijing')
<class 'tuple'>
('name', 'beike', 'home', 'beijing')
[1, 2, 3, 4, 5]
import os 


ROOT=os.getcwd()
print(os.getcwd())
print(os.listdir(ROOT))

print(eval("os.listdir(ROOT)"))

import ast
print(ast.literal_eval("os.getcwd()"))
# 执行结果
['.git', '.gitignore', '.idea', '.vscode', 'codeC++', 'README.md', 'test2.png', 'testcode']
['.git', '.gitignore', '.idea', '.vscode', 'codeC++', 'README.md', 'test2.png', 'testcode']

    raise ValueError(f'malformed node or string: {node!r}')
ValueError: malformed node or string: <_ast.Call object at 0x00000238777A56A0>

参考资料

https://zhuanlan.zhihu.com/p/193129156

标签:22,str1,evalstr1,literal,eval,print,os
From: https://www.cnblogs.com/tian777/p/17773955.html

相关文章

  • InCopy(Ic)2022软件下载 IC中文直装版下载 软件激活版
    AdobeInCopyCC2018官方中文版是一款优秀的创意写作编辑软件,由大名鼎鼎的Adobe公司所出品。该InCopyCC与AdobeInDesignCC紧密集合为作家,编辑,设计师等创意人员协同工作流。AdobeInCopyCC2018版本采用了更加现代的UI设计,增加了对HIDPI和Retina显示屏的支持;增强了字体搜索功......
  • 2022 CCPC 女生赛 补题 ACEGHI
    2022女生赛补题ACEGHIhttps://codeforces.com/gym/104081属于是考前抱佛脚了,希望能有个好成绩球球了一些写过的题题解在此:如何评价2022CCPC女生赛?-知乎用户的回答-知乎A.减肥计划模拟直到最大的那个人到前面(最开始用queue模拟的,样例居然过了)WA了之后直接改成变量记......
  • CSP 2022 游记
    updon23/10/18一年了。CSP还剩3days感慨。初赛啥也没干。就随便刷刷洛谷有题。考完普及感觉很稳。考完提高感觉蒙蒙的。听说有很多人过tg不过pj?所以就感觉tg能过(updon2023.9:。。。然后tg只有48。pj81.5。光速打脸。去不了S了。/ng复赛开T1:不就是快速幂吗,水水就......
  • 【专题】2022年中国跨境电商行业研究报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32044近年来,我国的跨境电子商务发展迅速,在过去五年中,其贸易额增长率达到了16.2%,已经成为稳定对外贸易的一支重要力量。阅读原文,获取专题报告合集全文,解锁文末52份跨境电商行业相关报告。一方面,随着跨境电子商务的发展,跨境电子商务的监管政策得到了......
  • Ubuntu22.04 使用核显显示+独显工作+风扇声音过大的缓解办法
    在使用教程安装好ubuntu22.04的显卡驱动后,在使用过程中发现2个问题。问题1:当我运行pmemd.cuda,可以使得显卡使用率高达98%。但是这同样带来一个问题,显卡的温度会升高,导致显卡风扇狂转,声音太吵。问题2:从开机后显卡就一直有/usr/lib/xorg/Xorg在运行。虽然只用了100MB左右,但是这无......
  • 算法训练day35 122.55.45.
    算法训练day35122.55.45.122.买卖股票的最佳时机II题目122.买卖股票的最佳时机II-力扣(LeetCode)题解代码随想录(programmercarl.com)将看似复杂的任务分解成小任务--->利润可以视作每连续两天价格差的和--->只取正利润classSolution{public:intmax......
  • Adobe Premiere Pro 2022最新版-PR中文版下载 包括最新版
    软件介绍AdobePremierePro2020中文版为用户提供从视频媒体,不管是手机拍摄的视频还是Raw5K,都能轻松导入并自由地组合,再以原生形式编辑且可以自动转码。PremiereProCC2020中文版改进了与Audition的集成,需渲染,即可在PremiereProEssentialSound面板中将关键帧、音频效果和......
  • 22
    condainstallpytorch=1.8.1torchvision=0.9.1-cpytorchpipinstalltensorboardeinopsscikit-imagepytorch_msssimopencv-python Installwarmupscheduler:cdpytorch-gradual-warmup-lr/pythonsetup.pyinstallcd........
  • 【专题】2022母婴洗护品类洞察报告报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33866品牌一直在思考如何更好地了解消费者的需求,特别是在年轻化和线上消费趋势加强的母婴行业。根据《2023母婴行业数据报告合集》,短视频直播平台成为该行业新的增长点。报告合集显示,母婴商品的消费人数在2022年全年和2023年前两个月均呈快速增长趋......
  • 【专题】2022上半年中国互联网婚恋交友市场研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33848随着10月的到来,我们已经踏入了年末冲刺阶段,是否准备好应对家庭的盘问了?工作稳定、挣多少钱、买房与否,最后总是绕不开催婚话题。阅读原文,获取专题报告合集全文,解锁文末47份婚恋相关行业研究报告,加入我们的同城群,和志同道合的小伙伴们一起寻找爱......