使用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