Я пытаюсь извлечь определенные строки из выходного файла txt. Строки, которые меня интересуют, - это несколько строк выше и немного ниже key_string, которые я использую для поиска результатов. Строка ключа одинакова для каждого результата.Python: ссылаясь на каждый повторяющийся элемент в списке по уникальному индексу
fi = open('Inputfile.txt')
fo = open('Outputfile.txt', 'a')
lines = fi.readlines()
filtered_list=[]
for item in lines:
if item.startswith("key string"):
filtered_list.append(lines[lines.index(item)-2])
filtered_list.append(lines[lines.index(item)+6])
filtered_list.append(lines[lines.index(item)+10])
filtered_list.append(lines[lines.index(item)+11])
fo.writelines(filtered_list)
fi.close()
fo.close()
Выходной файл содержит правильные строки для первой записи, но умножается на каждую доступную запись. Как обновить индексирование, чтобы он мог читать каждую отдельную запись? Я попытался найти решение, но как начинающий программист, я изо всех сил пытался использовать функцию enumerate() или набор коллекций.
Спасибо, Ryszard! Это именно то, что я искал. Проблема заключалась в том, что извлеченные данные были только первой записью, дублированной по количеству записей в выходном файле. Это связано с тем, что метод python list.index имеет некоторые ограничения. Ниже приведено описание метода list.index из документации python 3.6: «Возвращенный индекс вычисляется относительно начала полной последовательности, а не аргумента start». – Bart