В строковой переменной задать условие для if
В строковой переменной задать условие для if. Мне была предоставлена БД в таблице которой есть поле фильтр следующего вида "a=="0100" or a=="1050" or ..." Значение в каждой строке поля меняется в том числе и по числу параметров. Теперь к сути мне хотелось бы реализовать следующую конструкцию.
filtr=Извлекаемое условие фильтрации из БД (a=="0100" or a=="1050" or ...)
if filtr:
....
else:
....
Подскажите пожалуйста как это можно реализовать.
Ответы (2 шт):
Автор решения: Nickolay Chistov
→ Ссылка
Если я правильно понял то такой код должен работать:
filtr=Извлекаемое условие фильтрации из БД (a=="0100" or a=="1050" or ...)
if eval(filtr):
....
else:
....
PS: Функция eval выполняет простой python-код.
Автор решения: Daniil Loban
→ Ссылка
C учетом того, что eval — зло, и возможно, не всегда его стоит использовать, предлагаю вариант на регулярках в случае, когда условие однотипно, иначе, при наличии других операторов в условии этот код придется слегка усложнить:
import re
db_filter = '(a=="0100" or a=="1050")'
if a in re.findall(r'\d+', db_filter):
...
else:
...