Разобрать строку регулярным выражением python

Нужно разобрать строку, например:

line = '1) среднее профессиональное (Дошкольное образование; Воспитатель дошкольного образования); 2) высшее (Дошкольная педагогика и психология; Преподаватель дошкольной педагогики и психологии)'

Нужно разобрать ее чтобы получилось следующее:

post = [{ edu: 'Cреднее профессиональное', 
          qualification: 'Дошкольное образование; Воспитатель дошкольного образования'}, ...]

Используя python re:

_line = re.sub(r'\([^()]*\)', '', post).title()
print(_line)
1) Среднее Профессиональное ; 2) Высшее 
_line = _line.split(';')
print(_line)
['1) Среднее Профессиональное ', ' 2) Высшее ']

Получился список, а как вытащить значения в скобках, не понятно


Ответы (2 шт):

Автор решения: GrAnd
import re

line = '1) среднее профессиональное (Дошкольное образование; Воспитатель дошкольного образования); 2) высшее (Дошкольная педагогика и психология; Преподаватель дошкольной педагогики и психологии)'
fields = ('edu', 'qualification')

result = [dict(zip(fields, x)) for x in re.findall(r'\d+\)\s*(.*?)\s*\((.*?)\)', line)]
print(result)
[{'edu': 'среднее профессиональное', 'qualification': 'Дошкольное образование; Воспитатель дошкольного образования'}, 
 {'edu': 'высшее', 'qualification': 'Дошкольная педагогика и психология; Преподаватель дошкольной педагогики и психологии'}]
→ Ссылка
Автор решения: SergFSM

можно еще так попробовать:

from re import finditer

line = '1) среднее профессиональное (Дошкольное образование; Воспитатель дошкольного образования); 2) высшее (Дошкольная педагогика и психология; Преподаватель дошкольной педагогики и психологии)'

post = [i.groupdict() for i in finditer(r'\d+\) (?P<edu>.*?) \((?P<qualification>.*?)\)',line)]

вывод:

[{'edu': 'среднее профессиональное',
  'qualification': 'Дошкольное образование; Воспитатель дошкольного образования'},
 {'edu': 'высшее',
  'qualification': 'Дошкольная педагогика и психология; Преподаватель дошкольной педагогики и психологии'}]
→ Ссылка