为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小怪兽爱吃肉 2021-08-14 13:44:06
我有一个这样的文本文件ababaabababab+hostname R1interface GigabitEthernet0/1 +shutdown+banner login-hostname rababababababaababaababababr#我想得到这样的输出>>> print running_conf+hostname R1interface GigabitEthernet0/1 +shutdown+banner login>>> print saved_conf     -hostname rababababababaababaabababab在这个网站上尝试了这么多东西后,我仍然无法让它工作。这是我的代码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
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

以下代码将从以“+”开头的行开始输出文件中的所有内容,直到到达以“-”开头的行:


copy = False


with 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 = False


with 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 = False

copy2 = False


with 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


查看完整回答
反对 回复 2021-08-14
?
慕容3067478

TA贡献1773条经验 获得超3个赞

以下是提供所需输出的程序,但请清楚指定输出的情况。


flag=False

with 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=False

with 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='')


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信