gpt4 book ai didi

python - Pyparsing:在parseaction中访问外部ParseResults

转载 作者:行者123 更新时间:2023-12-01 09:26:11 27 4
gpt4 key购买 nike

from pyparsing import *
class AParseActionHolder(object):
def __call__(self, string, index, t):
f(info_from_outer_parse_results,t[0])
expr = operatorPrecedence( Word(nums),[
(Literal('A'), 1, opAssoc.RIGHT,AParseActionHolder()),
(Literal('B'), 2, opAssoc.LEFT),
(Literal('C'), 2, opAssoc.LEFT)])
print(expr.parseString("3B1C2BA1")[0])#[['3','B','1'],'C',['2','B',"nested in B and C"]]
print(expr.parseString("A1B3")[0])#["nested in B", 'B', '3']
print(expr.parseString("A(1B3)")[0])#["not nested", ['1', 'B', '3']]

如何从嵌套了 parseaction 参数的外部解析结果中访问信息?我可以用解析来做到这一点吗?如果没有,是否有其他 Pyparsing 工具,或者我应该定义以 pyparsing.ParseResults 作为参数的递归函数?

最佳答案

不,没有办法访问外部结果 - 在您的情况下,因为在解析内部结果时它们甚至还没有被解析!

您可能需要编写一个递归函数,该函数适用于从 parseString 返回的完全解析的树。当您在树上行走时,跟踪您的路径,当您找到“A”元素时,将其替换为路径。

直接使用返回的 ParseResults 可能很困难,因此您可能希望通过对返回的结果调用 asList() 来获取树:

tree = expr.parseString("whatever").asList()

关于python - Pyparsing:在parseaction中访问外部ParseResults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50375933/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com