Итак, посмотрим, что нам уже удалось сделать. Мы открыли и прочитали текстовый файл, в котором записано название регионов, взяли и сохранили их в специально созданное множество "regions". Далее, мы с вами загрузили веб-страницу, на которой хранится таблица с результатами олимпиады и с помощью модуля "Beautiful Soup" мы извлекли эту таблицу, извлекли все ее строчки и научились с помощью цикла "for" перебирать все эти строчки и на каждом шаге из каждой строчечки извлекать эти ячейки и создавать список из этих ячеек. Отлично! Давайте разбираться, что нам нужно делать дальше, что мы будем дальше, как мы будем дальше поступать внутри этого цикла, когда мы получили нужные ячейки. Для этого вспомним, какая наша конечная цель. Наша конечная цель — это для каждого региона записанного вот в этом файле, собрать необходимые данные касательно результатов олимпиады. Для этого, когда мы получаем какую-то строчку, информацию о каком-то школьнике, нам нужно понимать из какого он региона и тот ли это регион, для которого нам нужно собрать данные. То есть для этого нам нужно из строчки, из строки таблицы извлечь название региона, но, давайте я запущу этот код, но нужно понимать, что название региона не лежит у нас в какой-то отдельной ячеечке, оно у нас лежит в ячейке вместе с именем ученика и вместе с классом, в котором он обучается. Поэтому нам нужно предпринять еще отдельные действия по извлечению его вот из этой ячейки, из такой. Давайте для этого мы напишем отдельную функцию, чтобы не тащить этот код в цикл непосредственно, потому что так будет красивее и аккуратнее. Поэтому я напишу функцию, которая принимает строчечку вот такого вида и извлекает из него название региона, имя ученика нам не нужно, а вот класс давайте тоже извлечем, потому что согласно условию нашей задачи, нам нужна информация только для учеников из 11-го класса. Итак, я пишу функцию, для этого я пишу ключевое слово "def", назову функцию "get_region_yea()r" так, как нам нужно получить регион и год обучения школьника, и в качестве параметра я введу такую перемену, которая будет хранить в себе содержимое ячеечки. Теперь давайте разберемся, как нам извлечь нужную информацию. У нас информация, которая нам нужна находится внутри скобочек, поэтому давайте, во-первых, я сделаю разбиение по вот такой вот открывающей скобочке, левую часть — отброшу, а правую — сохраню. Давайте я введу переменную промежуточную, которая будет называться "region_year" и в нашей ячеечке я выполню "split" по открывающей скобке и возьму второй элемент. Давайте я пока, что сразу же эту переменную верну и мы будем тренироваться на какой-нибудь произвольной строчке, в произвольной ячеечке из нашей таблицы. Например, возьму вот эту ячейку, скопирую ее и просто так, еще раз скопирую, просто буду использовать ее для проверки того, как работает наша функция. Итак, вот мы взяли и использовали правую часть того, что находится от открывающей скобки. Здесь нам еще мешает это закрывающая скобочка, давайте отбросим ее с помощью метода "rstrip", "rstrip" ведет себя точно так же, как простой "strip", но отбрасывает символ не с двух сторон, а только справа и мы хотим справа отбросить эту закрывающую скобочку. Запускаем. Отлично! Теперь у нас просто записанные через запятую и пробел название региона и класс, иначе говоря, год обучения ученика. Давайте сделаем просто "split" по этому разделителю и извлечем их в отдельные переменные. Ввожу попеременную "region" и это "region_year", применяем метод "split", сплитим мы по запятой и пробелу, и берем то, что находится слева, то есть то, что стоит под нулевым индексом и вводим переменную "year", класс у нас — это число, поэтому давайте превращать его сразу же в число. Снова делаем разбиение по запятой и пробелу, и теперь уже берем результаты этого разбиения, точнее элемент результата, с индексом "1". И теперь давайте вернем не один, не одну строчку "region_year", а сразу две: "region" и "year". Надеюсь, вы помните, что так тоже поступать можно, два значения из функции возвращать тоже можно. Давайте я здесь буду писать не вот так, а я создам переменные, которую назову тоже: "region" и "year" и их сразу же и напечатаю. Обратите внимание, что вот эти "region" и "year", это не те же самые "region" и "year", что здесь, вот эти переменные они существуют только внутри этой функции, когда мы находимся за ее пределами, их уже нет. И мы видим, что вот у нас переменная "region", давайте их даже выведем на разных строчках, чтобы было нагляднее. Вот у нас "region" — эта Республика Мордовия, "year" (класс обучения) — это девять. Отлично! Вот мы написали такую замечательную функцию, которой мы можем воспользоваться. Давайте теперь внедрим ее в наш цикл, который проходит по строкам таблицы. Во-первых, давайте извлечем нужную ячеечку "name_region_year", это вторая колоночка нашей таблицы, значит мы должны взять ячеечку с индексом "1" и извлекаем из нее содержимое с помощью атрибута "text". Теперь извлекаем из этой ячеечки регион и год обучения ученика с помощью функции, которую мы с вами выше написали. Теперь давайте напечатаем: "region_year" и давайте пока, что поставим потом "break", чтобы у нас для одной строчки этот цикл выполнился, а потом сразу остановился, чтобы мы посмотрели на один результат вывода. Вот мы видим, что мы взяли одну строчечку, вот эту самую первую, мы извлекли название региона — Республика Татарстан, класс — 10 и на этом остановились. Теперь сотрем этот "break" и вот мы прошли по всем строчкам таблицы и для каждого школьника мы извлекли регион, который он представляет и класс, в котором он учится. Но нам нужны не все регионы и не все классы, нам нужны только регионы, которые входят в наш текстовый файл, а значит входят в наше множество и нам нужен только 11-й класс. Поэтому давайте я буду печатать "region" и "year", только если "region" находится во множестве "regions", а также год обучения равен 11, не забываю про двоеточие и за отступом напечатаю "region" и "year". Тоже сначала поставлю "break", чтобы мы посмотрели только на первую итерацию, на первую успешную итерацию, и мы видим, если раньше у нас первая строчка хранила в себе данные "Республика Татарстан 10", то теперь мы проходили по нашему циклу, пока не встретили "город Москва", Москва была в нашем файле и 11-й класс. Уберу этот "break" и мы видим, что теперь здесь гораздо меньше строчек, везде у нас только ученики 11-го класса и встречаются только те регионы, которые записаны в наш файлик. Отлично! Осталось только понять, как сохранять вот эти наши данные.