# \((?:CC|CL|COM|HON|HU|LA|Q|SS|/)+\) tagPattern = re.compile(tagPattern, flags=re.IGNORECASE) prerequisitesPattern = re.compile(r'(\(Prerequisites: .+?\))') for index, description in enumerate(descriptions): try: startIndex = re.search(r'\(Requirement[s]?: ', description).start() nestingLevel = 0 for offset, char in enumerate(description[startIndex:]): if char == '(': nestingLevel += 1 elif char == ')': nestingLevel -= 1 if nestingLevel == 0: endIndex = startIndex + offset + 1 break description = description[:startIndex] + description[endIndex:] except AttributeError: pass description = tagPattern.sub(repl='', string=description) description = prerequisitesPattern.sub(repl='', string=description) descriptions[index] = description.strip() listToJson(descriptions, 'description')
import json from typing import List from util import listToJson if __name__ == '__main__': sections: List[dict] = json.load(open('_pawsSection.raw.json', 'r')) campuses = set() for section in sections: campuses.add(section['location']) campuses = list(campuses) listToJson(campuses, 'campus')
import json from typing import List from util import listToJson if __name__ == '__main__': sections: List[dict] = json.load(open('_pawsSection.raw.json', 'r')) notes = set() for section in sections: for note in section['notes']: notes.add(note) notes = list(notes) listToJson(notes, 'note')
import json from util import listToJson if __name__ == '__main__': courses: list = json.load(open('_pawsCourse.raw.json', 'r')) sections: list = json.load(open('_pawsSection.raw.json', 'r')) prerequisites = set() for course in courses: prerequisite: str = course['prerequisite'] if prerequisite is not None: prerequisites.add(prerequisite) for section in sections: prerequisite: str = section['prerequisite'] if prerequisite is not None: prerequisites.add(prerequisite) prerequisites = list(prerequisites) listToJson(prerequisites, 'prerequisite')
requirements = set() for section in sections: description: str = section['title'][1] try: # Search for header startIndex = re.search(r'\(Requirement[s]?: ', description).end() # AttributeError # We could simply search for ')' # But there could be nesting prentices, so a nesting counter is required # For example: 'Background knowledge in Fortran, C/C++ or other programming language (other than MATLAB or similar), and partial differential equations.' nestingLevel = 1 for offset, char in enumerate(description[startIndex:]): if char == '(': nestingLevel += 1 elif char == ')': nestingLevel -= 1 if nestingLevel == 0: endIndex = startIndex + offset break requirements.add(description[startIndex:endIndex]) except AttributeError: # 'NoneType' object has no attribute 'end' pass requirements = list(requirements) listToJson(requirements, 'requirement')
import json from typing import List from util import listToJson if __name__ == '__main__': sections: List[dict] = json.load(open('_pawsSection.raw.json', 'r')) titles = set() for section in sections: titles.add(section['title'][0]) titles = list(titles) listToJson(titles, 'title')
import json from util import listToJson if __name__ == '__main__': courses: list = json.load(open('_pawsCourse.raw.json', 'r')) scheduleTypes = set() for course in courses: scheduleTypes.update(course['scheduleTypes']) scheduleTypes = list(scheduleTypes) listToJson(scheduleTypes, 'scheduleType')
import json from util import listToJson if __name__ == '__main__': courses: list = json.load(open('_pawsCourse.raw.json', 'r')) levels = set() for course in courses: level: str = course['level'] if level is not None: levels.add(level) levels = list(levels) listToJson(levels, 'level')
import json from util import listToJson if __name__ == '__main__': courses: list = json.load(open('_pawsCourse.raw.json', 'r')) sections: list = json.load(open('_pawsSection.raw.json', 'r')) restrictions = set() for course in courses: restrictions.update(course['restrictions']) for section in sections: restrictions.update(section['restrictions']) restrictions = list(restrictions) listToJson(restrictions, 'restriction')
import json from util import listToJson if __name__ == '__main__': courses: list = json.load(open('_pawsCourse.raw.json', 'r')) courseAttributes = set() for course in courses: courseAttributes.update(course['courseAttributes']) courseAttributes = list(courseAttributes) listToJson(courseAttributes, 'courseAttribute')
import json from typing import List from util import listToJson if __name__ == '__main__': sections: List[dict] = json.load(open('_pawsSection.raw.json', 'r')) sessions = set() for section in sections: session: str = section['session'] if session is not None: sessions.add(session) sessions = list(sessions) listToJson(sessions, 'session')