完成搜索后打印其他行

时间:2017-05-25 05:17:28

标签: python-3.x

我有一个txt文件,其中包含许多我不需要的信息。下面的程序适用于大部分文件。我的问题是,当我找到包含"OB"的行时,我想要打印所有行after "OB" and before "CB"。我不知道这些行包含什么,所以我无法搜索它们,并且在"OB" and "CB"行之间可能有一行或25行。

这太混乱了吗?

f=open('temp.txt','r')
f1=open('newtemp.txt', 'a')

a ='PN'
b = 'OB'
c = 'CB'

for line in f.readlines():
    if a in line:
        print (line)
    if b in line:
        print (line)
    if c in line:
        print (line)       


f1.close()
f.close()

2 个答案:

答案 0 :(得分:0)

以下将一次读取一行,测试b(“OB”)是否在行中,然后停止读取,继续读取下一个循环,直到遇到{{{ 1}}(“CB”)在里面。不需要旗帜;它只依赖于每行向前移动的文件指针。

c

答案 1 :(得分:0)

你可以试试这个:

f = open('temp.txt','r')
f1 = open('newtemp.txt', 'a')

a ='PN'
b = 'OB'
c = 'CB'

flag = False

for line in f.readlines():

    if b in line:            
        flag = True
        continue

    if flag:
        if c not in line:
            print (line)       
        else:
            break

f1.close()
f.close()

这只是为了让您了解如何解决问题。请注意,在此示例中,我没有使用af1变量。