Python 当传递的参数被计算为普通字符串时,ast.literal_eval()抛出错误
我有一个python函数,字符串作为参数传递给它, 参数可以是int、数组、字典或普通字符串的字符串表示形式 对于int、array和dictionary而言,其工作正常,但如果参数是普通字符串,ast.literal\u eval()将抛出错误Python 当传递的参数被计算为普通字符串时,ast.literal_eval()抛出错误,python,python-3.x,Python,Python 3.x,我有一个python函数,字符串作为参数传递给它, 参数可以是int、数组、字典或普通字符串的字符串表示形式 对于int、array和dictionary而言,其工作正常,但如果参数是普通字符串,ast.literal\u eval()将抛出错误 import ast # below statements throw error #output_value = ast.literal_eval('someNormalString') #output_value = ast.literal
import ast
# below statements throw error
#output_value = ast.literal_eval('someNormalString')
#output_value = ast.literal_eval('name1 name2 name3')
#below statements work fine
output_value = ast.literal_eval('5')
output_value = ast.literal_eval('[{"id":"XYZ_GTTC_TYR", "name":"Suction"}]')
output_value = ast.literal_eval('["name1","name2"]')
print(output_value)
如果参数只是一个普通字符串,有没有办法处理它
下面是我的python函数
def func(key):
value = ast.literal_eval(value)
return value
代码将字符串视为
someNormalString
,但实际上需要使用'someNormalString'
。要实现这一点,请按如下方式修改代码:
output_value = ast.literal_eval("'someNormalString'")
output_value = ast.literal_eval("'name1 name2 name3'")
理解这里发生的事情的一个好方法是将
ast.literal\u eval
看作一个(高度简化的)python解释器,它计算字符串中的内容
当您运行ast.literal\u eval('someNormalString')
时,就好像您让python计算someNormalString
——这显然会引发错误
尝试:
ast.literal\u eval('someNormalString')
因此ast
正在评估'someNormalString'
。您最好知道您的值是否应该表示可以评估的内容。如果您有一个看起来像有效文本的字符串,但应该是普通字符串,该怎么办?旁注:这些是有效的列表和字典文本,但它们碰巧也是有效的JSON。你确定JSON不是你需要使用的吗?