gpt4 book ai didi

python - pyparsing:无法从 ParseResults 对象获取结果

转载 作者:行者123 更新时间:2023-12-01 07:41:50 27 4
gpt4 key购买 nike

>>> from pyparsing import Word, alphanums, OneOrMore, Optional, Suppress

>>> var = Word(alphanums)
>>> reg = OneOrMore(var('predictors') + Optional(Suppress('+'))) + '~' + OneOrMore(var('covariates') + Optional(Suppress('+')))

>>> string = 'y1 ~ f1 + f2 + f3'
>>> reg.parseString(string)
(['y1', '~', 'f1', 'f2', 'f3'], {'predictors': ['y1'], 'covariates': ['f1', 'f2', 'f3']})

它能够正确解析事物,但我无法获取预测变量协变量的所有值。它似乎只存储最后一个值:

>>> results = reg.parseString(string)
>>> results.covariates
'f3'
>>> results['covariates']
'f3'

我想以列表的形式获取预测变量协变量中的所有值。有什么想法为什么会发生这种情况吗?

最佳答案

默认情况下,结果名称使用与 Python 字典类似的逻辑:如果为同一键分配了多个值,则仅保留最后分配的值。

但是,可以覆盖此行为,具体取决于解析器如何定义结果名称。

如果使用完整的 expr.setResultsName("XYZ") 形式,请添加 listAllMatches=True 参数。这告诉 pyparsing 保留所有解析值的列表并将它们作为列表返回。

如果使用快捷方式 expr("XYZ") 形式,请在名称末尾添加 '*':expr("XYZ *")。这相当于将 listAllMatches 设置为 True。

对于使用 setResultsName 缩写形式的情况,setResultsName 中存在尾随 '*':expr( "name*")expr.setResultsName("name", listAllMatches=True)。如果您更喜欢调用 setResultsName,则不要使用 '*' 表示法,而是传递 listAllMatches 参数。

关于python - pyparsing:无法从 ParseResults 对象获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56668009/

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