使用pyparsing
我尝试分析一些文本与复合式像pyparsing可以吐出导致ParseException的文本吗?
a = pp.Word(pp.alphas).setResultsName('A')
b = pp.Word(pp.nums).setResultsName('B')
c = pp.Word(pp.alphas).setResultsName('C')
expr = a + b + c
和parseString
失败,出现异常
ParseException: Expected W:(0123...) (at char 7), (line:1, col:8)
到目前为止好。但是,为了更好地理解发生了什么,是否可以询问pyparsing
/parseString
直接告诉我什么字符来自输入字符串不匹配? (当然,我可以从例外文本中的信息中自行计算)
此外,有可能看到哪个子表达式(a,b或c)引发了异常?
谢谢!像魅力一样工作。 - 使用'setName'也不错,但是编写'.a.setname('A')','.b.setname('B')'和'.c.setname('C' )'......如果ParserElement'对象可以检查它所引用的变量名 - 这很好,但是在Python中这不太可能...... – halloleo
记住,为表达式保留setName(在这个例子中,只是字母和numword),每次使用时都不需要调用它。但是,是的,我研究了自动调用表达式的各种选项,包括回想调用堆栈和检查包含赋值的行,但它们都相当危险,在版本或Python实现中不可靠。祝你好运! – PaulMcG