2015-09-27 2 views
2

Мне нужно найти некоторую строку в файлах и скопировать содержимое между ними в отдельный файл.Назначение инкрементных имен файлов

См., Например, «Привет» повторяется несколько раз в файле. Я хочу скопировать текст между этими последующими «Hello» в файл. Каждый раз «Hello» повторяет текст, следующий за ним, нужно перейти в новый файл.

Пожалуйста, подтвердите правильность моей логики, используемой в следующем сценарии, а также мою ошибку с отступом от цикла «Если».

import re 

text_file = "Hello.txt" 
search1 = "Hello" 
outfile = "charlie" 
write1 = False 
x = 0 

with open(text_file , "r") as infile: 
    fi = infile.readlines() 
with open("outfile%s" % x, "w") as fo: 
    fo.write("============================================ \n") 
    for line in fi: 
     if search1 in line: 
      write1 = True 
      x +=1 
      fo.write(line) 
     elif write1: 
      fo.write(line) 

ответ

2

Попробуйте

text_file = 'Hello.txt' 
search_key = 'Hello' 
out_file = 'charlie_%d.txt' 
current_file = None 
occurrence = 0 

with open(text_file, 'r') as input_file: 
    try: 
     for src_line in input_file: 
      if search_key in src_line: 
       # searched text is found, writing to file 
       occurrence += 1 
       if current_file: 
        current_file.close() 
       current_file = open(out_file % occurrence, 'w') 
       current_file.write("============================================ \n") 
       current_file.write(src_line) 
      elif current_file: 
       # no searched text, write line to already open file 
       current_file.write(src_line) 
    finally: 
     if current_file: 
      current_file.close() 
+0

Я попытался выше, однако его до сих пор дает мне отступа ошибку после «если» цикла. Я переформатировал сценарий несколько раз, но эта ошибка согласована – Zoro99

+0

Вступление + = 1 ^ TabError: непоследовательное использование вкладок и пробелов в отступе – Zoro99

+0

Какой редактор вы используете? – mergenchik

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