У меня есть дерево синтаксиса, сохраненное в текстовом файле в стиле LISP, с открытыми и закрытыми скобками, которые показывают отношения. Я хочу удалить все листья. Например, у меня есть «(Det the)», что я хочу стать «Det». Я не специалист по регулярному выражению, поэтому мне интересно, как я мог бы справиться с этим поведением в более сложной структуре с вложенными скобками. Пример дерева (в моем файле находится в одной строке, отступ только для более простой визуализации):Удалить листья в дереве с регулярным выражением (Python)
(S
(NP I)
(VP
(VP (V shot) (NP (Det an) (N elephant)))
(PP (P in) (NP (Det my) (N pajamas)))))
я бы что-то вроде:
(S NP
(VP
(VP V (NP Det N))
(PP P (NP Det N))))
Это именно то, что мне нужно! Я попросил бы вас немного больше помочь, если это возможно: мне нужно иметь поддержку с символом Юникода, я сделал небольшой тест, и, например, «è», естественно, не обнаружен \ w (это только [a-z]). Как я могу справиться с этим? –
@AndreaRomagnoli: См. [Re.UNICODE] (https://docs.python.org/2/library/re.html?highlight=re#re.UNICODE) в документах 're' Python. –
Большое спасибо! –