Python 如何评估字符串并返回一个对象

Python 如何评估字符串并返回一个对象

通过使用Python中的eval()函数,我们可以评估一个字符串并返回一个Python对象。eval() 是一个Python内置函数,它通过解析字符串作为代码表达式来评估一个字符串参数。

语法

eval(expression[, globals[, locals]])

参数

  • expression: 要作为Python表达式计算的字符串。

  • globals: 可选参数,包含全局参数的字典。

  • locals: 可选参数,包含局部参数的字典。

  • Return: 返回从表达式计算的结果。

如果字符串包含算术表达式

如果我们将包含算术表达式的字符串传递给eval()函数,首先它解析表达式,然后计算它,最后返回计算得到的Python对象。

示例

var = 100
string_EXP_1 = "2*4"
string_EXP_2 = "var + 20"

print("string expression 1: ", string_EXP_1)
print("string expression 2: ", string_EXP_2)

# use the eval method 
result_1 = eval(string_EXP_1)
result_2 = eval(string_EXP_2)

print("Output for Expression 1: ", result_1)
print("Output for Expression 1: ", result_2)

输出

string expression 1:  2*4
string expression 2:  var + 20
Output for Expression 1:  8
Output for Expression 1:  120

正如我们在上面的示例中所看到的,eval()成功评估了形成的字符串算术表达式并返回了一个整数对象。我们还可以看到函数访问了一个全局变量x。

如果字符串包含列表/元组

eval()函数还可以评估包含列表/元组的字符串。这意味着它基于字符串数据返回一个列表/元组对象。

示例1

string = "1, 2"

print("Input String: ", string)
print('type', type(string))

# apply the eval method 
result = eval(string)

print("Output : ", result)
print("Output object type: ", type(result))

输出

Input String: 1, 2
type <class 'str'>
Output :  (1, 2)
Output object type:  <class 'tuple'>

输入字符串包含两个由逗号分隔的元素,在Python中,逗号分隔的值被视为元组的元素。因此,上述示例在应用eval()函数后返回了一个元组对象。

示例2

与上一个示例类似,eval()函数评估字符串并返回一个列表对象。

string = "[45, 9, 16]"

print("Input String: ", string)
print('type', type(string))

# apply the eval method 
result = eval(string)

print("Output : ", result)
print("Output object type: ", type(result))

输出

Input String:  [45, 9, 16]
type <class 'str'>
Output :  [45, 9, 16]
Output object type:  <class 'list'>

如果包含列表解析表达式的字符串

eval()函数可以评估列表解析表达式,并返回一个Python列表对象,如果输入字符串包含列表解析表达式。

示例

eval函数成功评估了列表解析表达式,并返回一个Python列表对象。

string = '[a*2 for a in range(5)]'

print("Input String: ", string)
print('type', type(string))

# apply the eval method 
result = eval(string)

print("Output : ", result)
print("Output object type: ", type(result))

输出

Input String:  [a*2 for a in range(5)]
type <class 'str'>
Output :  [0, 2, 4, 6, 8]
Output object type:  <class 'list'>

如果包含一个Python字典的字符串

如果字符串包含一个Python字典,则eval()方法会返回一个原始的Python字典对象。

示例

String_dict = "{'One': 1, 'two': 2, 'three': 3}"
print("String represented dictionary: ",String_dict)
print(type(String_dict))

# use the eval method 
dict_ = eval(String_dict)
print("Output: ", dict_)
print(type(dict_))

输出

String represented dictionary:  {'One': 1, 'two': 2, 'three': 3}
<class 'str'>
Output:  {'One': 1, 'two': 2, 'three': 3}
<class 'dict'>

如我们在上面的输出块中看到,eval() 函数返回一个 Python 字典对象。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程