gpt4 book ai didi

python - pyparsing:如何找到形式为 a + b = c OR c = a + b 的字符串

转载 作者:行者123 更新时间:2023-11-28 22:01:46 25 4
gpt4 key购买 nike

我有一个小型解析项目*,病理学家将他们的诊断记录在电子记录中。他们中的绝大多数使用“GLEASON SCORE:3+4=7”的形式,但是,有很多重复的形式。我不太明白如何应对的是“GLEASON SCORE:7=3+4”

到目前为止,我的语法是

gleason = Group("GLEASON" + Optional("SCORE") + Optional("GRADE") + Optional("PATTERN") + Optional(":") + num("left") + "+" + num("right") + Optional("=") + Optional("total"))

我尝试添加

... + Optional(":") + Optional(num("total")) + Optional("=") + ...

在“left”变量之前,但它只找到丢失的记录,而不是所有记录。我需要搜索模式 A (a+b=c) 或模式 B (c=a+b)。我怎样才能在 pyparsing 中做到这一点?


最佳答案

使用 pyparsing 的 operatorPrecedence 而不是使用 nums 和 '+' 滚动你自己的算术表达式轻松定义 4 函数算术表达式:

arith_expr = operatorPrecedence(num,
[
(oneOf('-'), 1, opAssoc.RIGHT),
(oneOf('* /'), 2, opAssoc.LEFT),
(oneOf('+ -'), 2, opAssoc.LEFT),
])

然后替换num("left") + "+" + num("right") + Optional("=") + Optional(num)("total")与:

arith_expr('lhs') + Optional('=' + arith_expr('rhs'))

现在您将能够解析任何算术表达式,包括带有嵌套括号的算术表达式,而不仅仅是“x+y=z”类型的表达式。

关于python - pyparsing:如何找到形式为 a + b = c OR c = a + b 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12595083/

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