在模式匹配后打印行,直到下一个模式匹配 Python

我有一个这样的文本文件


ababaabababab

+hostname R1

interface GigabitEthernet0/1

 +shutdown

+banner login

-hostname r

ababababababa

ababaabababab

r#

我想得到这样的输出


>>> print running_conf


+hostname R1

interface GigabitEthernet0/1

 +shutdown

+banner login




>>> print saved_conf     

-hostname r

ababababababa

ababaabababab

在这个网站上尝试了这么多东西后,我仍然无法让它工作。这是我的代码


with open ("file.text", "r") as saveoutput:

    for line in saveoutput:

        if line.startswith( '+' ):

            continue

            if line.startswith( '-' ):

                break

        print line

    for line in saveoutput:

        if line.startswith( '-' ):

            if line.endswith( '#' ):

                break

        print line


小怪兽爱吃肉
浏览 168回答 2
2回答

qq_遁去的一_1

以下代码将从以“+”开头的行开始输出文件中的所有内容,直到到达以“-”开头的行:copy = Falsewith open ("file.text", "r") as saveoutput:    for line in saveoutput:        if line.startswith( '+' ):            copy = True        if line.startswith( '-' ):            copy = False        if copy:            print line和以下程序copy = Falsewith open ("file.text", "r") as saveoutput:    for line in saveoutput:        if line.startswith( '-' ):            copy = True        if line.endswith( '#' ):            copy = False        if copy:            print line将输出从以“-”开头的第一行到以“#”结尾的行的所有内容。如果您想要一个程序同时执行这两个操作:copy1 = Falsecopy2 = Falsewith open ("file.text", "r") as saveoutput:    for line in saveoutput:        if line.startswith( '+' ):            copy1 = True        if line.startswith( '-' ):            copy1 = False        if line.startswith( '-' ):            copy2 = True        if line.endswith( '#' ):            copy2 = False        if copy1 or copy2:            print line

慕容3067478

以下是提供所需输出的程序,但请清楚指定输出的情况。flag=Falsewith open ("file.txt", "r") as saveoutput:    for line in saveoutput:        if line.startswith('-'):            flag=False        elif line.startswith('+'):            flag=True        if flag:            print(line,end='')print('------------------------')flag=Falsewith open ("file.txt", "r") as saveoutput:    for line in saveoutput:        if (line.startswith('+')) or (line.endswith('#\n')):            flag=False        elif line.startswith('-'):            flag=True        if flag:            print(line,end='')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python