2017-01-18 8 views
0

У меня есть следующий код:поиска строки в качестве Перечислишь в случае успеха выполнить другой поиск Python

with open("daily_rebar_test.txt", "w") as f2 : 
    for index, i in enumerate(f): 
    if regex.search(ignorecase, i): 
     f2.writelines(f[index:index+1]) 
     f2.writelines("\n") 
     index +=1 

     if regex.search("Journal", i, index, index+1): 
      f2.writelines(f[index:index+1]) 
      f2.writelines("\n") 
      index +=1 

Что мне это нужно сделать, это найти прекомпилированный случае, если он находит его, он записывает строку в новый txt-файл. После того, как строка была написана успешно, мне нужно, чтобы она выполняла другой поиск с использованием нового параметра («Журнал»), для каждого найденного случая ему нужно было записать его в новый файл; когда «Журнал» больше не встречается, мне нужно, чтобы он вернулся и выполнил первоначальный поиск.

В настоящее время код находит предварительно скомпилированный случай, но поскольку он не увеличивает индекс правильно, когда он пытается найти «Журнал», он все еще находится на старой строке. Даже если он сможет выполнить поиск в Журнале, он сделает это только один раз, а затем вернется к первоначальному поиску. Как-то мне нужен цикл for внутри цикла for, но я просто не могу понять, как писать синтаксис.

Спасибо, Cristian

+0

Я не совсем что вы делаете, но это похоже на случай, когда вы не должны использовать перечисление, а просто увеличивайте свой индекс вручную. –

+0

Если я изменяю 'for index, i в enumerate (f)' to 'для индекса в f', он даст ошибку: index + = 1 TypeError: не может конкатенировать объекты 'str' и 'int' – Cristi1985

+0

Почему вы меняете это так? В вашем коде 'i' является элементом в' f'; как я уже сказал, вам следует продолжить итерацию с помощью 'i', но установите' index' вручную. –

ответ

0

мне удалось получить сценарий для работы, используя следующий код: «IGNORECASE = regex.compile (data_keyword_search, regex.IGNORECASE)

f = open(data_path_to_suite).read().splitlines() 

with open(data_path_to_save, "w") as f2: 
    enum = enumerate(f) 
    found_custom_directory = False 
    for index, line in enum: 
     if regex.search(ignorecase, line): 
      f2.writelines(f[index:index+1]) 
      f2.writelines("\n") 
      found_custom_directory = True 

# 
     else: 
      if regex.search("Directory", line): 
       found_custom_directory = False 
      if found_custom_directory == True: 
       if regex.search("Journal", line): 
        f2.writelines(f[index:index+1]) 
        f2.writelines("\n")'