python 打印匹配的字符串,第 n 行的另一个字符串再次开始查找字符串的循环

python print matched string, another string at nth line again starting the loop for finding string

我刚刚开始学习 python 编程。 下面是输出文件。

SERVER-XXX:
        IPADDR
        text1
        text2
        text3
    SERVER-yyy:
        IPADDR
        text3
        text1
        text2
    SERVER-zzz:
        IPADDR
        text1
        text3
        text2
  1. 我正在逐行阅读。首先它将搜索 "Server*" 并打印
  2. 然后在 SERVER 中另一个循环将开始搜索另一个字符串 text3 并打印和循环中断。
  3. 然后第一个循环将再次搜索与 SERVER* 匹配的另一个词,依此类推。

我要求输出为:

SERVER-XXX:
text3
SERVER-yyy:
text3
SERVER-zzz:
text3

下面是我准备的代码

import re
f = open('dsp.txt', 'r')
for i, line in enumerate(f.readlines()):
    line=line.rstrip('\n')
    line=line.strip()
    print(i, line)
    if line.startswith("SERVER"):
        while i > 0:
            i=i+1
            print i
            if "text3" in line: # here i am not able to increment line.
                x= line[i]
                print ("%d" % line + /n + x)
                break

你不需要两个 for 循环。您只需要在找到一个时更改 search term。像这样:

look = 'SERVER'
tooglelook = lambda x: 'SERVER' if x == 'text3' else 'text3'
for i, line in enumerate(f.readlines()):
    if look in line:
        print line
        look = tooglelook(look)

对于您给定的示例输入:

SERVER-XXX:
        IPADDR
        text1
        text2
        text3
    SERVER-yyy:
        IPADDR
        text3
        text1
        text2
    SERVER-zzz:
        IPADDR
        text1
        text3
        text2

产生这个输出

SERVER-XXX:
text3
SERVER-yyy:
text3
SERVER-zzz:
text3