Я использую parse_expr()
функцию SymPy
для оценки строковых выражений, которые ссылаются на переменные.Теперь я столкнулся с проблемой разбора выражения, содержащего переменную со значением "nan"
.Я пытался заменить значение "nan"
на 0
, передавая что-то вроде {"nan": 0}
в качестве параметра local_dict
или global_dict
, но не смог найти способ заставить его работать.
Как я могу проанализировать и оценить выражение, которое относится к переменным, имеющим "nan"
значения?Могу ли я сопоставить "nan"
определенному значению, передав параметры в parse_expr()
?
>>> from sympy.parsing.sympy_parser import parse_expr
>>> data = {'result': {'a': 'nan', 'b': 123}}
>>> expr = "result['b'] + 123" # <-- This works well.
>>> parse_expr(expr, data)
>>> 246
>>> expr = "result['a'] + 123" # <-- This doesn't work.
>>> parse_expr(expr, data)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".../sympy-1.2rc1-py3.6.egg/sympy/parsing/sympy_parser.py", line 950, in parse_expr
return eval_expr(code, local_dict, global_dict)
File ".../sympy-1.2rc1-py3.6.egg/sympy/parsing/sympy_parser.py", line 863, in eval_expr
code, global_dict, local_dict) # take local objects in preference
File "<string>", line 1, in <module>
TypeError: must be str, not Integer