Python 在pyparsing中将用户定义的参数传递给setParseAction

Python 在pyparsing中将用户定义的参数传递给setParseAction,python,pyparsing,Python,Pyparsing,我有如下内容(简化版) 有没有办法将一些用户定义的参数发送到ParseClass的init函数?例如一些上下文等,以便我将- class ParseClass(object): def __init__(self, tokens, context): # do some processing on tokens based on context expr = Word().setParseAction(ParseClass, context) 这可能吗?我希望,如果

我有如下内容(简化版)

有没有办法将一些用户定义的参数发送到ParseClass的init函数?例如一些上下文等,以便我将-

class ParseClass(object):
    def __init__(self, tokens, context):
         # do some processing on tokens based on context

expr = Word().setParseAction(ParseClass, context)

这可能吗?

我希望,如果前者可行,那么后者可以通过以下方式实现:

expr = Word().setParseAction(lambda tokens: ParseClass(tokens,context) )

但我不知道。(如果它不起作用,我很乐意删除它)

使用一个函数,该函数接受您的上下文,并返回相应的解析操作作为其返回值:

def replaceWith(replacementString):
    def parseAction(string, loc, tokens):
        return replacementString
    return parseAction

expr = Word(alphas).setParseAction(replaceWith("xyzzy"))

print OneOrMore(expr).parseString("The quick brown fox jumps over the lazy dog.")
印刷品:

['xyzzy', 'xyzzy', 'xyzzy', 'xyzzy', 'xyzzy', 'xyzzy', 'xyzzy', 'xyzzy', 'xyzzy']
或使用转换字符串:

>>> print expr.transformString("The quick brown fox jumps over the lazy dog.")
xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy.
@保罗·麦奎尔——很高兴知道我不在左外野。
>>> print expr.transformString("The quick brown fox jumps over the lazy dog.")
xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy.