Python教程:ast.literal_eval()的示例用法

ast.literal_eval() 是一个 Python 的内置函数,它用于解析并执行一个包含 Python 文字字面值的抽象语法树(AST)。这个函数非常有用,因为它可以用来处理那些不包含任何可执行代码的字符串,但需要以一种安全的方式进行。它主要用于处理数字、字符串、元组、列表、字典、集合和 None。

# @Author : 小红牛
# 微信公众号:wdPython
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'}

请注意,ast.literal_eval() 不能解析并执行包含 Python 代码的字符串。例如,以下的代码将抛出一个 SyntaxError:

ast.literal_eval("print('Hello, world!')")
  # SyntaxError: invalid syntax

这是因为 “print(‘Hello, world!’)” 是一个合法的 Python 表达式,但它不是一个合法的文字字面值。如果你需要解析并执行包含 Python 代码的字符串,你应该使用 exec() 函数。但请注意,exec() 不像 ast.literal_eval() 那样安全,因为它可以执行任何 Python 代码。
Python教程:ast.literal_eval()的示例用法_第1张图片

你可能感兴趣的:(我的Python教程,python,Python教程)