gpt4 book ai didi

python - Pyparsing - 一组中的零个或一个

转载 作者:行者123 更新时间:2023-11-28 22:55:19 44 4
gpt4 key购买 nike

我如何从一组 token 中得到零个或每个 token 中的一个?它们可以按任何顺序排列。假设这是我的代码:

def parseFunc(self, string):
firstToken = CaselessKeyword("KeyWordOne")
secondToken = CaselessKeyword("KeyWordTwo")
thirdToken = CaselessKeyword("KeyWordThree")

stmt = ZeroOrMore(firstToken | secondToken | thirdToken)
return stmt.parseString(string)

ZeroOrMore 有一个问题,因为每个标记都可以显示多次。对于 Optional,它们必须按照它们列出的确切顺序。

这是我目前的解决方案:

stmt = ZeroOrMore(firstToken | secondToken | thirdToken)
tokens = stmt.parseString(string)
s = set()
for x in tokens:
if x[0] in s: return "Error: redundant options"
s.add(x[0])

return tokens

最佳答案

Optional 与“零或一”相同:

stmt = Optional(firstToken | secondToken | thirdToken)

还有一种新的乘法形式,类似于regex中的{min,max}:

stmt = (firstToken | secondToken | thirdToken) * (0,1)

编辑:

对于任意顺序,使用 Each(使用运算符 & 定义):

stmt = (Optional(firstToken) & Optional(secondToken) & Optional(thirdToken))

关于python - Pyparsing - 一组中的零个或一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17086188/

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