我是 pyparsing 的新手,我正在尝试使用 setParseAction 但有时不会被调用。 这是代码
def fun():
comdty_tok = StringStart() + Word(alphas) + StringEnd()
comdty_tok.setParseAction(call_back)
comdty_tok.leaveWhitespace()
return comdty_tok
def call_back(p):
print 'Calling ....'
print p
class ComdtyTok(Token):
comdty_tok = StringStart() + Word(alphas) + StringEnd()
comdty_tok.setParseAction(call_back)
comdty_tok.leaveWhitespace()
parseImpl = comdty_tok.parseImpl
class SymParser(object):
tok = ComdtyTok()
@staticmethod
def parse(symbol):
p = SymParser.tok.parseString(symbol)
print p
print "Second"
x = fun()
x.parseString(symbol)
return p
SymParser.parse('ABCD')
我不明白为什么第一次不调用setParseAction。
最佳答案
我刚刚第一次玩 pyparsing,所以......
在初始化类变量comdty_tok
时,您实际上从未调用parseString()
,因此永远不会调用与解析对象关联的回调。
关于python - Pyparsing SetParseAction 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9233032/