Как извлечь переменные из логического выражения в Python - PullRequest
0 голосов
/ 03 мая 2018

Я хочу извлечь переменные из логического выражения

ex)
Ввод: E= A or B or (C and not D) -> String
Выход: ['E', 'A', 'B', 'C', 'D'] -> List

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Если ваши выражения и имена переменных так просты, как показывает ваш пример, это может сработать:

import re

string = 'E = A or B or (C and not D)'

variables = list(filter(None, re.split(r'[^A-Z]+', string)))

print(variables)

OUTPUT

['E', 'A', 'B', 'C', 'D']
0 голосов
/ 03 мая 2018

С re (теперь работает со строковыми данными):

inp = "E= random or andy"
#inp = "E= A or B or (C and not D)"

logic = ["xor","or","and","not","=",")","(",""," "]
outp = re.split(r'(=|\)|\(| )', inp)
outp = [x for x in outp if x not in logic ]

print(outp)
0 голосов
/ 03 мая 2018

Вы можете использовать split() и join(), как в

s='E= A or B or (C and not D)'
s=''.join( c for c in s if  c not in '=()' )
l = []
for x in s.split():
    if(x not in ['or', 'and', not']):
        l.append(x)
print(l)

join() используется для удаления скобок и знака =.

Выход:

['E', 'A', 'B', 'C', 'D']
...