python - Pyparsing SetParseAction 问题

标签 python parsing pyparsing

我是 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/

相关文章:

python - 确定 Shapely 点是否在 LineString/MultiLineString 内

python - `pyparsing` : iterating over `ParsedResults`

python - 以任何顺序和数字处理一系列 pyparsing 表达式

python - cocos2d(python)中的bezier_conf.path1是什么

python - 如何在 Python 中用间隔索引数组的多个项目

java - 在 Java 中将字符串解析为比较器类型

Java LR 或 LL 解析

python - 从字符串中解析多个 FQDN

python - Pyparsing - 在行开头匹配文字,忽略空格

python - 如何设置绘制文本的背景颜色?