PyParsing 在一个字符串中抛出异常,而在另一种情况下则不会抛出异常

问题描述 投票:0回答:1

2.2.1
我是 PyParsing 的新手。我在 Ubuntu 20.04 上使用 Python 3.12 并使用 pip install 安装 PyParsing

我有 2 个不同的结果(1 中的一个例外),并且 2 个不同的文本中也没有例外。 我已启用 setName 和诊断消息。我的问题是,两篇文章相似,但结果不同。 任何解决此问题的帮助将不胜感激

对于文本 2,不会引发异常 这是我的代码

    prasnaS.setName("prasna")
    parser = englishPreface +invocation +titleLine+pp.ZeroOrMore(EmptyLine)+pp.OneOrMore(prasnaS)+EmptyLine
    result =parser.parse_string(text)

文字1

Match prasna at loc 155535(2247,2)
  
   ^
Match prasna failed, ParseException raised: Expected prasna, found end of text  (at char 155535), (line:2247, col:2)
Exception  <traceback object at 0x7f53a00739c0>
Traceback (most recent call last):
  File "//home/xxxxx/projects/aksr/doc2txt.py", line 158, in <module>
    result =parser.parse_string(text)
            ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "//home/xxxxx/projects/aksr/myenv1/lib/python3.12/site-packages/pyparsing/core.py", line 1197, in parse_string
    raise exc.with_traceback(None)
pyparsing.exceptions.ParseException: , found end of text  (at char 155535), (line:2247, col:2)

文字2:

Match prasna at loc 179582(1977,1)
  
  ^
Match prasna failed, ParseException raised: , found end of text  (at char 179585), (line:1980, col:1)
python pyparsing
1个回答
0
投票

我最终删除了 EmptyLine 并且它起作用了。 现在解析器看起来像

    parser = englishPreface +invocation +titleLine+pp.ZeroOrMore(EmptyLine)+pp.OneOrMore(prasnaS)

我仍然无法理解为什么,希望得到任何解释

© www.soinside.com 2019 - 2024. All rights reserved.