2015-09-08 1 views
2

Я пишу код в Python для поиска строки в огромном текстовом файле, который будет возникать каждые 10-15 строк и копировать его следующий строка в другом текстовом файле. Я новичок в Python, поэтому не уверен, что было бы лучше сделать это. Я пытаюсь с помощью ниже сценария:Поиск строки и запись ее в новый текстовый файл вместе со следующей строкой с помощью Python

name = raw_input('Enter file:') 
    with open(name) as f: 
     with open("output.txt", "w") as f1: 
      for line in f: 
       if "IDENTIFIER" in line: 
        f1.write(line) 

После этого то, что мне нужно в выходной файл вся следующая строка после того, как эта строка найдена.

что-то вроде строки + 1, которая, я полагаю, недоступна в Python.

Как я могу перейти к следующей строке и написать эту строку в выходном файле после текста IDENTIFIER?

+0

Если следующая строка также содержит эту строку, как это должно быть обработано? – YXD

+0

Насколько велик файл? –

+0

Файл находится выше 7 МБ. – nishapatel

ответ

4
with open("file_in.txt") as f: 
    with open("file_out.txt","w") as f2: 
     for line in f: 
      if "my_test" in line: 
       f2.write(line.rstrip("\n")+next(f)) # the next line :P 
+0

Это, безусловно, лучший ответ. +1 :-) – Sait

+3

Или 'f1.writelines (строка + next (f," ") для строки в f, если« IDENTIFIER »в строке)' –

+0

Если две последовательные строки содержат '' my_test '', то 3-я строка не будет записываться в выходной файл. – user81269

2

Вы можете использовать переменную flag:

flag = False 

name = raw_input('Enter file:') 
with open(name) as f: 
    with open("output.txt", "w") as f1: 
     for line in f: 
      if flag: 
       f1.write(line + '\n') 
       flag = False 
      if "IDENTIFIER" in line: 
       f1.write(line) 
       flag = True 
+1

хороший ответ и способ, которым я регулярно занимаюсь: –

+0

Это тоже работает .. но в идеальном случае Идентификатор не приходит последовательно. Однако вывод, который я ожидаю, имеет идентификатор и его описание в одной строке. Можно ли это сделать? – nishapatel

+0

@nishapatel Да, см. Мой обновленный ответ. – Sait

Смежные вопросы