はちょうど大体の人がこの質問に答えるためにそれほど熱心ではありません、なぜあなたが理解する必要があり、一緒
def format(text):
depth = 0
result = ''
text = text.replace(' ', '')
for i in range(len(text)):
c = text[i]
if c == '(':
depth += 1
result += '\n' + ' ' * depth + '('
elif c == ')':
depth -= 1
if text[i-1] != ')':
result += ')'
else:
result += '\n' + ' ' * depth + ')'
else:
result += c
return result.strip()
s = "(Root (AB (ABC) (CBA)) (CD (CDE) (FGH)))"
print(format(s))
<script src="//repl.it/embed/IS2q/5.js"></script>
を入れて機能するソリューションです。あなたは解析の部に入っていますが、その複雑さは無視しています。あなたの目標を達成するためには、を定義する必要があります。その場合、その文法に基づいて解析する必要があります。結果として得られる内部構造、すなわち解析木/構文木は、その後、所望の形態にフォーマットされる必要がある。
私の提案は、jsonのような十分に確立された標準を使用して、オリジナルのテキストではなくデータを表現することです。