Python: как найти и заменить все имена переменных в строке - PullRequest
0 голосов
/ 15 ноября 2018

Предположим, что я получил строку из внешнего интерфейса, например

str='(A==1) & (B==\'A\') & (C>sin(2))'

это самый простой формат, строка может быть намного более сложной.

и я хотел бы применить условие фильтрации данных, например

data = {'A': [1, 2, 3, 4],\
        'B': ['A','B','C','D'],\
        'C':[0.1,0.2,0.3,0.4]}
df=pd.DataFrame(data)
df_test=df[eval(str)]

Чтобы это сработало, мне нужно найти переменные A,B,C в строке и заменить их на df.A, df.B, df.C.

Я попробовал следующий метод

import ast
names = [node.id for node in ast.walk(ast.parse(str)) if isinstance(node, ast.Name)]
print(names)

но возвращает ['C', 'A', 'B', 'sin'], в котором «грех» не требуется.

Я также пытался pyparse, но до сих пор не могу понять, как определить шаблон имени переменной.

Будет очень признательно, если вы поможете мне дать несколько советов о том, как найти и заменить имя переменной в строке?

...