如何在python中的匹配行之后抓行


问题内容

我是一个业余使用Python的人,现在已经有一段时间了。抱歉,这是一个愚蠢的问题,但是我想知道是否有人知道输入文件中的格式是否像这样简单地抓取一行代码:

标题1

1号线

2号线

3号线

标题2

1号线

2号线

第3行

我不知道每个标题后有多少行,但我想全部抓住。我所知道的只是名称,或标题的正则表达式模式。

我知道读取文件的唯一方法是“文件中的换行:”方式,但是我不知道如何在当前行之后抓行。希望这有意义,并感谢您的帮助!

**_感谢所有回应!
我已经尝试实现一些解决方案,但是我的问题是,并非所有标题都具有相同的名称,并且我不确定如何解决它。我需要为每个人使用不同的正则表达式…有什么建议吗?
_


问题答案:

发电机功能

def group_by_heading( some_source ):
    buffer= []
    for line in some_source:
        if line.startswith( "Heading" ):
            if buffer: yield buffer
            buffer= [ line ]
        else:
            buffer.append( line )
    yield buffer

with open( "some_file", "r" ) as source:
    for heading_and_lines in group_by_heading( source ):
        heading= heading_and_lines[0]
        lines= heading_and_lines[1:]
        # process away.