在模式匹配之后打印行,直到下一个模式匹配为止

2024-09-28 01:30:42 发布

您现在位置: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

Tags: ifconflinelogininterfacehostnamebannerprint
2条回答

下面是提供您所需输出的程序,但请明确说明输出的情况。你知道吗

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

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

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

相关问题 更多 >

    热门问题