2015-06-08 3 views
1

Я читаю большую строку текстового файла построчноПропустить линию при использовании with..open

import re 

with open("file.txt") as f: 
    for line in f: 
     if re.search(regex stuff, line): 
      #skip next line 

Я хотел бы, чтобы пропустить строку, если я нахожу матч - как я могу сделать это с помощью with...open заявления ?

+0

Вы пытаетесь что-то сделать, когда линия не соответствует? – styvane

+0

В обратном порядке. Когда он подходит, я пытаюсь прочитать следующую строку. – Matt

+1

На самом деле, читая мой OP, он должен «пропустить следующую строку» - не «пропустить линию». – Matt

ответ

1

Использование next на исходном файле-как OBJ f.

import re 

with open("file.txt") as f: 
    for line in f: 
     if re.search(regex, line): 
      next_line = next(f, '') 

Это поместит содержимое следующей строки в next_line или если вы соответствуете на последнюю строку файла, это будет пустая строкой. Сделайте что-нибудь с next_line, если хотите. Когда for -loop возобновится, он будет из строки, следующей за этой ...

1

Вам понадобится состояние. Я буду называть это состояние skipnext:

import re 

skipnext = False 

with open("file.txt") as f: 
if skipnext: 
    skipnext = False 
    continue 
for line in f: 
    if re.search(regex stuff, line): 
    skipnext = True 
2

Вы условие должно быть if not search(regex stuff,line)

import re 

with open("file.txt") as f: 
    for line in f: 
     if not re.search(regex stuff, line): 
      continue # or do something 
Смежные вопросы