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

too*_*fly 6 python file-io text

我是一名业余爱好者,现在使用Python开启和关闭一段时间了.很抱歉,如果这是一个愚蠢的问题,但我想知道是否有人知道如果输入文件中的格式是这样的一种简单的方法来获取一堆行:

"标题1

第1行

第2行

第3行

标题2

第1行

第2行

第3行"

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

我知道读取文件的唯一方法是"for file in file:"方式,但我不知道如何抓住我当前所在行之后的行.希望这是有道理的,谢谢你的帮助!

*感谢所有的回复!我试图实现一些解决方案,但我的问题是并非所有标题都是相同的名称,我不知道如何解决它.我需要一个不同的正则表达式...任何建议?*

S.L*_*ott 7

发电机功能

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.
Run Code Online (Sandbox Code Playgroud)