Я хочу извлечь некоторые вопросы и ответы из некоторых файлов, которые я читаю, но мое регулярное выражение не работает для меня:
from re import findall,DOTALL
text='''
category 1
1. question
a) answer
b) answer
2. question
a) answer
b) answer
category 2
3. question
a) answer
b) answer
'''
Формат в файлах - это в основном нумерованный список с переменной количество проиндексированных ответов, таких как a)
b)
или a.
b.
... с ответами, занимающими несколько строк в разных местах. Я пробовал это:
mo=findall(r"^\d\.(.+)(\w\)|\.(.+))+$",text,DOTALL)
print(mo)
Я пытался поместить в группы захвата, чтобы отделить вопросы от ответов, удаление "^"
дает самый близкий результат, но это все еще мусор, и я не понимаю, почему это происходит :
[(' question\na) answer\nb) answer\n2. question\na) answer\nb) answer\ncategory 2\n3', '. question\na) answer\nb) answer\n', ' question\na) answer\nb) answer\n')]
Я рассматриваю вопрос о поиске пробела между ответами, чтобы не использовать мусор "категории" как часть ответа, или больше не контролировал мой ввод для поддержки формата без пробелов а также.
Я пытаюсь получить вывод наподобие (не должен быть кортежем, вот что возвращают группы findall):
[('question', 'answer', 'answer'),
('question', 'answer', 'answer'),
('question', 'answer', 'answer')]