2017-08-16 2 views
0

Je ne sais pas exactement où commencer par celui-ci. Je sais que je peux faire des combinaisons logiques de masques comme ça: (mask1 & mask2) | mask3 | (mask4 & (mask5 | mask6))l'interprétation d'une chaîne à faire et/ou des combinaisons de masques dataframe

Maintenant, si j'avais un utilisateur entré une chaîne comme: '(criteria1 & criteria2) | criteria3 | (criteria4 & (criteria5 | criteria6))', mais nécessaire pour interpréter chaque critère grâce à une fonction pour déterminer et retourner un masque, comment puis-je conserver les parenthèses et la logique, puis combiner les masques?

Répondre

0

Après un travail que j'ai pu faire cela avec des expressions régulières et eval().

utilisant l'expression rationnelle, j'extrait à la fois le « modèle » et les « critères ». Le « modèle » ressemblerait à quelque chose comme 1 & 2 | (3 & 4 & (5 or 6)), et les « critères » associés serait quelque chose comme ['criteria1', 'criteria2', ..., 'criteria6']. Ensuite, je pouvais manipuler les critères comme je le voulais, puis replacer les valeurs manipulées dans la chaîne du modèle. Enfin, je pouvais courir eval(template) ou quel que soit le nom de la chaîne finale à exécuter.