Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当传递的参数被计算为普通字符串时,ast.literal_eval()抛出错误_Python_Python 3.x - Fatal编程技术网

Python 当传递的参数被计算为普通字符串时,ast.literal_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

我有一个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_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不是你需要使用的吗?