У меня есть строковое представление дерева. Я хотел бы преобразовать его во вложенный список. Есть ли способ сделать это рекурсивно, так что я получаю вложенные списки?Сплит «Вложенная» строка по скобкам во вложенный список
Пример строка выглядит следующим образом:
(TOP (S (NP (PRP I)) (VP (VBP need) (NP (NP (DT a) (NN flight)) (PP
(IN from) (NP (NNP Atlanta))) (PP (TO to) (NP (NP (NNP Charlotte)) (NP
(NNP North) (NNP Carolina)))) (NP (JJ next) (NNP Monday))))))
До сих пор я ниже, но это не дает мне то, что я ищу, вообще.
import sys
import re
for tree_str in sys.stdin:
print [", ".join(x.split()) for x in re.split(r'[()]',tree_str) if x.strip()]
Не могли бы вы привести пример того, что вы хотите, как выход? Имеются ли пробелы в строке? – Jivan
Это интересная человеко-читаемая сериализация дерева. –
Пространства не имеют значения. Это из Penn Treebank, который иногда может быть приятным. –