python解析2个已知行之间的文本 block

标签 python pyparsing

我正在尝试使用 pyparsing 获取两条已知行之间的行 block 。例如:

ABC
....
DEF

我的Python代码:

end = Literal("\n").suppress()
firstLine = Literal("ABC") + SkipTo(end)
secondLine = Literal("DEF") + SkipTo(end)
line = SkipTo(end)
test = firstLine + OneOrMore(line) + secondLine

test.searchString(myText)

--> 但它不起作用。 Python 只是挂起。 有人可以告诉我该怎么做吗?

谢谢

最佳答案

将此调试代码添加到您的程序中:

firstLine.setName("firstLine").setDebug()
line.setName("line").setDebug()
secondLine.setName("secondLine").setDebug()

并将 searchString 更改为 parseString。每次尝试匹配表达式时,setDebug() 都会打印出来,如果匹配,则打印出匹配的内容,如果不匹配,则打印出异常。通过您的程序,进行这些更改后我得到:

Match firstLine at loc 0(1,1)
Matched firstLine -> ['ABC', '.... ']
Match line at loc 11(3,1)
Matched line -> ['DEF ']
Match line at loc 15(3,1)
Exception raised:Expected line (at char 17), (line:4, col:2)
Match secondLine at loc 15(3,1)
Exception raised:Expected "DEF" (at char 16), (line:4, col:1)
Traceback (most recent call last):
  File "rrrr.py", line 19, in <module>
    test.parseString(myText) 
  File "C:\Python25\lib\site-packages\pyparsing-1.5.5-py...
    raise exc
pyparsing.ParseException: Expected "DEF" (at char 16), (line:4, col:1)

可能不是你所期望的。

关于python解析2个已知行之间的文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4040762/

相关文章:

Python 嵌套 for 循环行为

python - Pyparsing:快速引用解析器定义正确吗?

python - 如何在pyparsing中匹配括号/方括号

python - 脚本执行时间[编辑]

python - 如何获取按特定对象的相交标签数量排序的查询集?

if else 语句上的 python 3.5.1 语法错误

python - 将列表列表拆分为更小的列表

python - 在 pyparsing 中获取等同于 asXML() 的数据结构?

python - 使用 pyparsing 跳到文本中的第一个可能性

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