解析形式为a+b=pyc=

2024-09-30 03:23:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个小的分析项目,病理学家把他们的诊断写成电子记录。他们中的绝大多数人使用“格里森分数:3+4=7”的形式,然而,有很多重复。我不太明白该如何应对的是“格里森分数:7=3+4”

到现在为止,我的语法是

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

我试着补充

^{pr2}$

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



Tags: 项目记录模式语法group电子leftvariable
2条回答
>>> eqn = Word(alphas,exact=1)+"+"+Word(alphas,exact=1)+"="+Word(alphas,exact=1)

>>> eqn2 = Word(alphas,exact=1)+"="+Word(alphas,exact=1)+"+"+Word(alphas,exact=1
)
>>> equation = eqn|eqn2
>>> equation.parseString("A+b=c")
(['A', '+', 'b', '=', 'c'], {})
>>> equation.parseString("A=b+c")
(['A', '=', 'b', '+', 'c'], {})
>>> equation.parseString("A=b-c")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python26\lib\site-packages\pyparsing.py", line 1032, in parseString
    raise exc
pyparsing.ParseException: Expected "+" (at char 3), (line:1, col:4)

不要使用nums和'+'滚动您自己的算术表达式,而是使用pyparsing的operatorPrecedence轻松定义一个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")替换为:

^{pr2}$

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

相关问题 更多 >

    热门问题