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都可以】:

  • 数学表达式
  • 函数调用
  • 条件表达式
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐