如何在Python中评估字符串并返回对象?
通过使用Python中的`eval()`函数,我们可以评估字符串并返回一个Python对象。`eval()`是Python的内置函数,它通过将字符串解析为代码表达式来评估字符串参数。
语法
eval(expression[, globals[, locals]])
参数
表达式:将被评估为Python表达式的字符串。
globals:可选参数,是一个包含全局参数的字典。
locals:可选参数,是一个包含局部参数的字典。
返回值:返回从表达式计算的结果。
如果字符串包含算术表达式
如果我们将包含算术表达式的字符串传递给`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()`函数还可以评估包含列表/元组的字符串。这意味着它根据字符串数据返回列表/元组对象。
示例
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()`函数后返回了一个元组对象。
示例
与之前的示例类似,`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字典对象。
广告