Mon objectif éventuel est d'appliquer des requêtes sql-where-clause-style pour filtrer les données pandas. Certaines recherches m'ont conduit à la méthode infixNotation de Pyparsing.Pyparsing infixNotation dans un arbre d'analyse: un seul opérateur se retrouve dans l'arbre?
Je trouve un exemple de notation infixe ici: http://nullege.com/codes/show/src%40p%40y%40pyparsing-2.0.2%40examples%40simpleBool.py/15/pyparsing.infixNotation/python#
mais qui traite en fait la notation, et je dois utiliser l'arbre plusieurs fois sur des données différentes. En cherchant de l'aide avec les arbres d'analyse, j'ai trouvé ceci: http://pyparsing.wikispaces.com/file/view/fourFn.py/30154950/fourFn.py
et j'ai pris l'implémentation de la pile à partir de là. Cependant, il ne se comporte pas comme je l'espère, alors j'espère que quelqu'un pourra me dire ce que je fais de mal.
est ici le cas le plus simple que je pourrais venir avec:
from pyparsing import Word, alphas, infixNotation, opAssoc
exprStack=[]
def pushFirst(strg, loc, toks):
exprStack.append(toks[0])
def addAnd():
exprStack.append("and")
varname = Word(alphas).setParseAction(pushFirst)
operators=[("and", 2, opAssoc.LEFT,addAnd)]
whereExpr = infixNotation(varname,operators)
exprStack=[]
teststring = "cheese and crackers and wine"
parsed=whereExpr.parseString(teststring)
for p in exprStack:
print p
Ce que je reçois de ce code est:
cheese
crackers
wine
and
Ce que je vous attendre à obtenir, de ma compréhension de la façon dont le infix méthode de notation devrait fonctionner, est:
cheese
crackers
wine
and
and
J'ai également essayé de le courir avec "fromage et craquelins et gagner e et whine "mais je n'en ai encore qu'un" et "dans ma liste. Qu'est-ce que je ne comprends pas dans l'utilisation de la méthode infixNotation?
Merci
J'ai fini par abandonner l'approche de la pile à la fin, et utilisé l'approche de l'objet préféré de Paul McGuire. Pour ceux qui recherchent des requêtes SQL-where-type appliquées aux données pandas, vous pouvez trouver une version (avec seulement une grammaire limitée) sur github ici: [link] (https://github.com/moink/askapanda) – moink