python 笔记ast.literal_eval 是 Python 标准库ast模块中的一个函数,用于安全地评估表示 Python 字面量或容器(如列表、字典、元组、集合)的字符串。

1 介绍

ast.literal_eval 是 Python 标准库 ast 模块中的一个函数,用于安全地评估表示 Python 字面量或容器(如列表、字典、元组、集合)的字符串

import ast 
 
# 解析并执行一个数字表达式 
num = ast.literal_eval("3.14") 
print(num) 
#3.14 
 
# 解析并执行一个字符串表达式 
str_ = ast.literal_eval('"Hello, world!"') 
print(str_) 
#Hello, world!
 
# 解析并执行一个元组表达式 
tuple_ = ast.literal_eval("(1, 2, 3)") 
print(tuple_) 
# (1, 2, 3) 
 
# 解析并执行一个列表表达式 
list_ = ast.literal_eval("[1, 2, 3]") 
print(list_) 
#[1, 2, 3] 
 
# 解析并执行一个字典表达式 
dict_ = ast.literal_eval("{'name': 'Alice', 'age': 25}") 
print(dict_) 
# {'name': 'Alice', 'age': 25} 
 
# 解析并执行一个集合表达式 
set_ = ast.literal_eval("{'apple', 'banana', 'cherry'}") 
print(set_) 
# {'apple', 'banana', 'cherry'}

2 和eval的区别/ast.literal_eval的禁忌

  • ast.literal_eval 仅能解析 Python 字面量和一些容器类型(如列表、字典、元组、集合等),这意味着它不能计算包含 Python 表达式或函数调用的字符串。
  • 这是一个设计上的限制,以确保安全性,防止执行潜在危险的代码。

无法执行的【这些eval都可以】:

  • 数学表达式
  • 函数调用
  • 条件表达式
作者:UQI-LIUWJ原文地址:https://blog.csdn.net/qq_40206371/article/details/138173160

%s 个评论

要回复文章请先登录注册