Мне нужна программа python, которая должна печатать каждый раздел текстового файла. Раздел определяется ключевым словом, найденным из списка слов, и начинается со строки, в которой присутствует ключевое слово, и заканчивается на той строке, в которой начинается следующий раздел. Например, рассмотрим следующий текстовый файл
word1
abcdef
ghis jsd sjdhd jshj
word2
dgjgj dhkjhf
khkhkjd
word23
dfjkg fjidkfh
word5
diow299 udhgbhdi
jkdkjd
word89
eyuiywiou299092
word3
...
...
...
Требуемый вывод программой:
Sections Found: [word1, word2, word3, word5, word89]
**********word1--SECTION**********
line 1: word1
line 2: abcdef
line 3: ghis jsd sjdhd jshj
**********word2--SECTION**********
line 4: word2
line 5: dgjgj dhkjhf
line 6: khkhkjd
**********word3--SECTION**********
line 14: word 3
line 15: ....
''' Suppose word4 is not found in the txt file then it should continue and move to next word found'''
**********word5--SECTION**********
line 9: word5
line 10: diow299 udhgbhdi
line 11: jkdkjd
...
...
...
...
'''Continue till the end of list of words '''
Подход:
list_of_words = [' word1 ',' word2 ',' word3 ',' word4 ',' word5 ',' word6 ', ....]
найти start_line для каждого слова в list_of_word и сохранить их в списке
затем найдите end_line для каждого слова, отсортировав список так, чтобы было легко найти самую большую ближнюю конечную строку для слова
, затем распечатайте найденный раздел с их номером строки: line_in_text_file
Код, используемый для получения номера строки: (Как создать переменную для каждого n в list_of_words)
for n in list_of_words:
with open(file_txt, 'r', encoding="utf8") as f:
data_file = f.readlines()
for num, lines in enumerate(data_file, 1):
if n in lines:
start_line = num
else:
continue
Код, используемый для поиска ближайшего числа больше n_start_line (val) start_line_list:
def closest(array_list, val):
array_list1 = [j for j in array_list if j > val]
array_list1.sort()
return array_list1[0]