2017-05-25 91 views
0

後我有很多我不需要信息的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() 
+0

'f1'從未使用 –

回答

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變量。

在給定的例子
0

以下將一次讀取線一條線,測試b(「OB」)是否是在該行,則停止讀出後,繼續在下一循環讀取,直到它遇到具有c的線( 「CB」)。無需標誌;它僅僅依賴於每行向前移動的文件指針。

fname = 'temp.txt' 
b = 'OB' 
c = 'CB' 

with open(fname) as fp: 
    for line in fp: 
     if b in line: 
      break 
    for line in fp: 
     if c in line: 
      break 
     print(line)