2013-08-21 140 views
0

我正在逐行處理文件。每行都會被檢查,它是否包含給定的文本。然後,需要將下一行分配給變量Python 3,增量迭代器

i_line = iter(file) 
for i_line in file: 
    if text in i_line: 
     #Go to the next line 
     line = next(i_line, None) #A problem 
     break 

如何增加迭代器i_line以便指向文件的下一行?兩種結構都不適用於我

next(i_line, None) 
i_line.next() 
+1

'i_line'只是一個普通的字符串,沒有任何一種迭代的,特別是不相關的文件'內部。 – delnan

+0

「下一行需要分配給變量」,你的意思是你想記錄下一行以便後續處理,或者你想進入下一個循環迭代嗎? – user2357112

+0

指定'i_line = iter(文件)'並不會改變'i_line'在你用作循環變量時的解釋方式。您可能想要刷新「for」循環工作方式的知識。 – user2357112

回答

1

只是做next(f)

喜歡的東西

>>> with open('testFile.txt', 'r') as f: 
     for line in f: 
      if 'cat' in line: 
       final_string = next(f) 

因此,對於

My Name is ABC. 
I am a male. 
My pet is a cat. 
It's name is Ronald. 
I hate rats. 

上面的代碼輸入文本文件給出

>>> final_string 
"It's name is Ronald.\n" 
0

使用line = file.next()而不是line = next(i_line, None)

0

這是一種處理文件的方法,其中包含next()

with open(filename) as file: 
    line = next(file, None) 
    while line: 
     print(line.strip()) 
     line=next(file, None) 

同時使用for line in file迭代器和next將打印每隔一行:

with open(filename) as file: 
    for line in file: 
     print(line.strip()) 
     line = next(file,None)