Dandomi

Untitled

Aug 6th, 2021
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.04 KB | None | 0 0
  1. import openpyxl, os, datetime, re
  2. import win32com.client as win32
  3. import numpy as np
  4. import itertools
  5.  
  6. if not os.path.exists('Расписание_1-4_курсов_с_01.04_по_05.07.2021_(2_поток).xlsx'):   #если этого файла нет, создаем новый
  7.     fname = (os.getcwd() + "\\Расписание_1-4_курсов_с_01.04_по_05.07.2021_(2_поток).xls").replace('\\', '\\') #ищем файл со старым расширением
  8.     excel = win32.gencache.EnsureDispatch('Excel.Application')
  9.     wb = excel.Workbooks.Open(fname)
  10.     wb.SaveAs(fname+"x", FileFormat = 51)    #FileFormat = 51 is for .xlsx extension              сохраняем в новом формате
  11.     wb.Close()                               #FileFormat = 56 is for .xls extension
  12.     excel.Application.Quit()
  13.  
  14.  
  15. # чекаем файл
  16. wb = openpyxl.reader.excel.load_workbook(filename="Расписание_1-4_курсов_с_01.04_по_05.07.2021_(2_поток).xlsx")
  17. wb.active = 0
  18.  
  19. sheet = wb.active
  20.  
  21.  
  22.  
  23.  
  24. weekday_list = {"Понедельник":1,"Вторник":2,"Среда":3,"Четверг":4,"Пятница":5,"Суббота":6,"Воскресенье":7}
  25. weekday_list1 = {value:key for key, value in weekday_list.items()}
  26.  
  27. #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}
  28. a_dict = list(map(chr, range(97,123))) #для поиска группы по столбцам
  29. a = range(4, 7) #для поиска группы по строкам
  30. weekday_range = range(4, 100) #для поиска дня недели
  31. length_list = (3, 5) # сколько может быть пар в один день  с учетом пустых ячеек
  32.  
  33. # получаем день недели
  34. liva_weekday = weekday_list1.get(datetime.datetime.today().isoweekday())
  35. if liva_weekday == 'Воскресенье':
  36.     liva_weekday = 'Понедельник'
  37.    
  38. weekly_schedule = []
  39. name = []
  40. for number in a: #цифры/строки
  41.     for key in a_dict: #буквы/столбцы
  42.         if type(sheet[key + str(number)].value) != type(None): #если ячейка не пустая
  43.             if '3исп-9'.upper() in sheet[key + str(number)].value: #ищем группу в расписании
  44.                
  45.                 for day in weekday_list:
  46.                     if day == liva_weekday:
  47.                         for number_day in weekday_range: #пробегаем в цикле по ячейки для поиска дня недели
  48.                             if type(sheet[key + str(number_day)].value) != type(None): #если ячейка не пустая
  49.                                 if day in sheet[key + str(number_day)].value: #Нашли день недели
  50.                                     next_day = weekday_list.get(day)+1
  51.                                     lest_day_text = weekday_list1.get(next_day)#среда
  52.                                    
  53.                                     next_weekday_range = range(number_day, 100)
  54.                                    
  55.                                     for day_next in weekday_list:
  56.                                         if day_next == lest_day_text:
  57.                                             for number_day_next in next_weekday_range: #пробегаем в цикле по ячейки для поиска след дня недели
  58.                                                 if type(sheet[key + str(number_day_next)].value) != type(None): #если ячейка не пустая
  59.                                                     if day_next in sheet[key + str(number_day_next)].value: #Нашли завтрашний день недели
  60.                                                        
  61.                                                         list_object = range(number_day+1, number_day_next) #от сегодняшнего дня недели до завтрашнего
  62.                                                        
  63.                                                         for obj in list_object:
  64.                                                             if type(sheet[key + str(obj)].value) != type(None):
  65.                                                                 # отсюда начинаем считывать пары
  66.                                                                 s = sheet[key + str(obj)].value
  67.                                                                 patter = r'\w+\s[А-ЯЁа-яё]{1}\.\s*[А-ЯЁа-яё]{1}\.' #типа маска
  68.                                                                 name = re.findall(patter, s) #фамилии
  69.                                                                 name = [n for n in name for i in n]
  70.                                                                 print(name)
  71.                                                  
  72. #print(weekly_schedule) # выводим результат
  73.  
  74.  
Advertisement
Add Comment
Please, Sign In to add comment