2014-11-04 103 views
2

我想解析一個字符串。如果這是字符串"(A (B (C D) (E F)) (G H))「,那麼我想解析它像A有孩子B和G,B有孩子C和E,並且沒有其他人有任何孩子。所以,我想輸出爲['A_B_G', 'B_C_E']如何解析python中的字符串?

我做這樣的事情!?

lst=[] 
str = (A (B (C D) (E F)) (G H)) 
lst.append(str.split(' ')) 

然後我卡

可能有人給我一個想法下一步該做什麼

+1

遞歸是解決這類問題的有效方法。 – 2014-11-04 13:32:28

+1

作爲一個第一步,嘗試按資歷分配字符串 – ldgorman 2014-11-04 13:32:32

+2

[本文](http://probablyprogramming.com/2009/11/23/a-simple-lisp-parser-in-python)解決了類似的問題,使用堆棧。 – bereal 2014-11-04 13:41:52

回答

1

我寧願不提示太多,但你可以從列表轉換爲

['(', 'A', '(', 'B', ...] 

然後您根據您看到的符號類型採取不同的操作,然後重新進行操作。 ()或一封信。

+1

我做到了。那麼我應該採取什麼行動?因爲我需要找到一個開括號的對應的右括號,我該怎麼做? – 2014-11-04 14:46:42