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

2024-10-03 17:18:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下内容(简体版)

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

expr = Word().setParseAction(ParseClass)

有什么方法可以发送一些用户定义的参数到ParseClass的init函数吗?比如一些背景等等,这样我就可以-

^{pr2}$

这可能吗?在


Tags: 方法selfobjectinitondefsomedo
2条回答

我预计,如果前一种方法可行,那么后一种方法可以通过:

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

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

使用一个接受上下文的函数,并返回适当的parse操作作为其返回值:

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.")

印刷品:

^{pr2}$

或使用transformString:

>>> print expr.transformString("The quick brown fox jumps over the lazy dog.")
xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy xyzzy.

相关问题 更多 >