Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import openpyxl, os, datetime, re
- import win32com.client as win32
- import numpy as np
- import itertools
- if not os.path.exists('Расписание_1-4_курсов_с_01.04_по_05.07.2021_(2_поток).xlsx'): #если этого файла нет, создаем новый
- fname = (os.getcwd() + "\\Расписание_1-4_курсов_с_01.04_по_05.07.2021_(2_поток).xls").replace('\\', '\\') #ищем файл со старым расширением
- excel = win32.gencache.EnsureDispatch('Excel.Application')
- wb = excel.Workbooks.Open(fname)
- wb.SaveAs(fname+"x", FileFormat = 51) #FileFormat = 51 is for .xlsx extension сохраняем в новом формате
- wb.Close() #FileFormat = 56 is for .xls extension
- excel.Application.Quit()
- # чекаем файл
- wb = openpyxl.reader.excel.load_workbook(filename="Расписание_1-4_курсов_с_01.04_по_05.07.2021_(2_поток).xlsx")
- wb.active = 0
- sheet = wb.active
- weekday_list = {"Понедельник":1,"Вторник":2,"Среда":3,"Четверг":4,"Пятница":5,"Суббота":6,"Воскресенье":7}
- weekday_list1 = {value:key for key, value in weekday_list.items()}
- #a_dict = {"A":1, "B":2, "C":3, "D":4, "E":5, "F":6, "G":7, "H":8, "I":9, "J":10, "K":11, "L":12, "M":13, "N":14, "O":15, "P":16, "Q":17, "R":18, "S":19, "T":20, "U":21, "V":22, "W":23, "X":24, "Y":25}
- a_dict = list(map(chr, range(97,123))) #для поиска группы по столбцам
- a = range(4, 7) #для поиска группы по строкам
- weekday_range = range(4, 100) #для поиска дня недели
- length_list = (3, 5) # сколько может быть пар в один день с учетом пустых ячеек
- # получаем день недели
- liva_weekday = weekday_list1.get(datetime.datetime.today().isoweekday())
- if liva_weekday == 'Воскресенье':
- liva_weekday = 'Понедельник'
- weekly_schedule = []
- for number in a: #цифры/строки
- for key in a_dict: #буквы/столбцы
- if type(sheet[key + str(number)].value) != type(None): #если ячейка не пустая
- if '3исп-9'.upper() in sheet[key + str(number)].value: #ищем группу в расписании
- for day in weekday_list:
- if day == liva_weekday:
- for number_day in weekday_range: #пробегаем в цикле по ячейки для поиска дня недели
- if type(sheet[key + str(number_day)].value) != type(None): #если ячейка не пустая
- if day in sheet[key + str(number_day)].value: #Нашли день недели
- next_day = weekday_list.get(day)+1
- lest_day_text = weekday_list1.get(next_day)#среда
- next_weekday_range = range(number_day, 100)
- for day_next in weekday_list:
- if day_next == lest_day_text:
- for number_day_next in next_weekday_range: #пробегаем в цикле по ячейки для поиска след дня недели
- if type(sheet[key + str(number_day_next)].value) != type(None): #если ячейка не пустая
- if day_next in sheet[key + str(number_day_next)].value: #Нашли завтрашний день недели
- list_object = range(number_day+1, number_day_next) #от сегодняшнего дня недели до завтрашнего
- name = []
- matrix = []
- for obj in list_object:
- if type(sheet[key + str(obj)].value) != type(None):
- # отсюда начинаем считывать пары
- s = sheet[key + str(obj)].value
- patter = r'\w+\s[А-ЯЁа-яё]{1}\.\s*[А-ЯЁа-яё]{1}\.' #типа маска
- name.append(re.findall(patter, s)) #фамилии
- matrix.append(name)
- name = np.matrix(matrix)
- name.tolist()
- print(name)
- #print(weekly_schedule) # выводим результат
Advertisement
Add Comment
Please, Sign In to add comment