В строковой переменной задать условие для 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:
  ...
→ Ссылка