2013-10-09 4 views
0

Я пытаюсь очистить некоторую информацию из большого текстового файла и столкнулся с проблемой.найти следующую прямую строку со строкой (после нахождения первой строки)

В этом файле есть несколько элементов, которые имеют start_needle как ID, но они не соответствуют порядку. End_needle - это строка, обозначающая конец элемента. Я могу получить начальную точку, но как бы я потянул линию, где происходит следующий ближайший экземпляр end_needle?

В принципе, «найти следующий экземпляр end_needle после start_needle»

start_needle = '725160001' 
end_needle = '* * END ITEM * *' 

filename = 'LAS3300Combined.txt' 
target = open('file.txt', 'w') 

start_list = [] 

with open(filename) as myFile: 
    for num, line in enumerate(myFile, 1): 
     if start_needle in line: 
      start_list.append(num) 
+1

Не могли бы вы опубликовать некоторые примеры текст из файла? У меня возникли проблемы с пониманием того, что вы подразумеваете под словом «они не в порядке». – Brionius

ответ

0

Тумблеров булевых флагов, когда старт и финиш:

start_list = [] 
end_list = [] 
started = False 

with open(filename) as myFile: 
    for num, line in enumerate(myFile, 1): 
     if not started and start_needle in line: 
      start_list.append(num) 
      started = True 
     if started and line.endswith(end_needle): 
      end_list.append(num) 
      started = False 
+0

работал как шарм! кажется довольно очевидным сейчас ха-ха. благодаря! – scruwys

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