Обратите внимание, что невозможно перечислить все строки из раздела, которые соответствуют некоторому условию, если вы не можете указать, как блок блок (и у вас есть несколько различных разделов в одном файле).Но, предполагая, что вы знаете только, как заканчивается раздел, вы можете дважды зациклить свой входной файл.На первой итерации вы можете хранить номера строк, в которых вы найдете строку "end of section".Что-то вроде:
end_of_section_line_nb = []
for counter, line in enumerate(file):
if #condition to check, use regex or just "some_string in line", depending on your needs
end_of_section_line_nb.append(counter)
Затем снова зациклите файл и найдите каждое вхождение строки ("udp" ...) в любом блоке.После первой итерации у вас есть номера строк, которые заканчивались разделом, так что вы можете проверить, в каком разделе вы находитесь.
Таким образом, вы будете назначать материал "udp" для следующего следующего распознанного блока, но вы не будетеможет определить, находится ли он в нем (поскольку вы не указали, как начинается блок).
Вы также можете перебрать файл один раз и всегда сохранять в памяти некоторое количество предыдущих строк, но это будет неэффективно, если ваши разделыбольшой.