Python 3.x 将包含已填充图案的数据删除到pattern python3的结束块

Python 3.x 将包含已填充图案的数据删除到pattern python3的结束块,python-3.x,Python 3.x,我有一个输出文件,它有三个状态代码,分别是SUCCESS、unreable和FAILED,我想首先检查这两个代码unreable和FAILED,我需要的数据被删除,包括模式线到结束块}一旦它得到这些模式搜索线 下面是数据文件data.txt host8 | UNREACHABLE! => { "changed": false, "msg": "[Errno None] Unable to connect to port 22 on 192.144.16.229",

我有一个输出文件,它有三个状态代码,分别是
SUCCESS
unreable
FAILED
,我想首先检查这两个代码
unreable
FAILED
,我需要的数据被删除,包括模式线到结束块
}
一旦它得到这些模式搜索线

下面是数据文件
data.txt

host8 | UNREACHABLE! => {
    "changed": false,
    "msg": "[Errno None] Unable to connect to port 22 on 192.144.16.229",
    "unreachable": true
}

host4 | SUCCESS | rc=0 >>
; generated by kdns-config-net
domain sammer.com
search sammer.com
nameserver 192.168.1.10
nameserver 192.168.1.11
nameserver 192.168.1.12

host1 | FAILED! => {
    "changed": false,
    "module_stderr": "",
    "module_stdout": "/bin/sh: /grid/common/pkgs/python/v2.7.10/bin/python2.7: No such file or directory\r\n",
    "msg": "MODULE FAILURE",
    "rc": 0
}
下面是我刚刚创建的serached模式,但正在寻找如上所述删除数据的想法

#!/usr/bin/python
# data_parse.py
f = open('data.txt', 'r')
for line in f:
    if "FAILED" in line or "UNREACHABLE" in line:
        print(line)
f.close()
脚本的测试结果如下:

host1 | UNREACHABLE! => {
host2 | UNREACHABLE! => {
host3 | FAILED! => {
host4 | FAILED! => {
所需数据:

host4 | SUCCESS | rc=0 >>
; generated by kdns-config-net
domain sammer.com
search sammer.com
nameserver 192.168.1.10
nameserver 192.168.1.11
nameserver 192.168.1.12

这对其他数据中可能出现的内容进行了一些假设,但您没有提供必要的信息来判断它们是否有效

inSuccess = False
for line in f:
    if inSuccess:
        if "FAILED" in line or "UNREACHABLE" in line:
            inSuccess = False
        else:
            print(line)
    elif "| SUCCESS |" in line:
        inSuccess = True
        print(line)

请为示例输入提供所需输出的示例。@ScottHunter,我已经更新了帖子,尽管我只需要以
SUCCESS
开头的数据。thnx让我试试。Scoot,我们需要第二个
print
语句吗?因为这里的
else
条件足以覆盖图案,如果图案不在
if
条件下。如果您询问是否需要第二个
打印
,则是:否则,不会打印成功行(除非它紧跟在成功部分之后)如果您询问是否需要明确的成功测试,并且不能用else替换,那么也可以回答是:否则,不在成功部分的数据行将被视为成功行。Brilliant@Scott