【问题标题】:python print matched string, another string at nth line again starting the loop for finding stringpython打印匹配的字符串,第n行的另一个字符串再次启动循环以查找字符串
【发布时间】:2017-11-14 07:03:46
【问题描述】:

我刚刚开始学习 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

【问题讨论】:

  • 有什么问题?
  • 这里if "text3" in line: 总是假的,因为line 的值一直是'SERVER'
  • 但我不明白那些来自 server-yyy 和 server-zzz 的 text3 来自哪里。你能解释清楚吗?
  • 我有许多合并的数据服务器详细信息输出。我需要隔离具有 text3 的服务器。 text3 只是一个在所有服务器中通用的字符串

标签: python string enumerate


【解决方案1】:

为此,您不需要两个 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

【讨论】:

  • 感谢沙克蒂曼。代码有效。我还需要打印服务器全名。所以我添加了一个代码 print line 。但如果我想打印包含 text3 的完整行。那么。?
  • @Prayag 我认为print line 应该适用于“服务器”和text3。不是打印吗?
  • print look print line look = tooglelook(look) print line。它两次都打印同一行server
  • 更新了答案和code。是有帮助还是有问题
  • 谢谢它确实帮助了我很多。a
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2018-03-22
  • 2013-05-16
  • 1970-01-01
  • 2010-12-25
相关资源
最近更新 更多