Я пытался разработать тип синтаксического анализатора для старых каталогов курсов и имею представление о том, что я хочу сделать, но не могу понять этого. По сути, предпосылка состоит в том, что я хочу проанализировать и найти сокращения курсов, поэтому информатика будет сокращена как «(CS C)». Затем мне нужно будет найти номера курсов, название курса и единицы курса. Мой шаблон регулярного выражения для них прост:
course_abbrev = re.compile('\([A-Z]{3}\)')
course_num = re.compile('[0-9]{3},?')
course_title = re.compile('.+?(?=I )')
course_units = re.compile('\d')
Формат всех каталогов немного отличается, но они относительно следующие:
"""
Computer Science (CSC)
Chairman: ...
201 Introduction to Computing I, 3
(Information of the course)...
220 Another Comp Class I, 3
(Information)...
...
...
...
Dental Hygiene (DHY)
Chairman: ...
101...
"""
Текст каталога несколько перемешан потому что он читается через PyPDF2, поскольку каталоги находятся в формате PDF, но поэтому я читаю страницу во время информации. Каким может быть эффективный метод поиска go сокращений, поиска номера после этого сокращения, чтобы затем найти заголовок после этого числа, а затем единицу курса. В модуле re есть способы перечислить все эти шаблоны (re.findall ()) или найти один из них (re.search ()), но я не уверен, как go найти один, сохранить его, а затем найти другой шаблон регулярного выражения оттуда, сохранение его и т. д. c.
РЕДАКТИРОВАТЬ: входные данные выглядят так благодаря PyPDF2, при этом страницы разбиваются и разделяются блоки информации:
COMPUTER SCIENCE (CSC)
CHAIRMAN: Professor Name (Computer Science
and Experimental Statistics)
201 Introduction
to Computing I and II, 3
Algorithms, programs, and computers. Basic
ming and program structure, data representation,
zation and characteristics of computers. Computer
tion of other stuff...
(Lee. 3). Staff 220 Computers in Society
II, 3 History, operation, application, and
social significance of
computers. Emphasis on the role of the computer in
ciety with respect to more information and dan
gers. (Lee. 3) Carrano