如何解析一個字符串並返回一個嵌套數組?


我想要一個Python函數,它接受一個字符串,並返回一個數組,其中數組中的每個項目都是一個字符,或者是另一個這樣的數組。嵌套數組在輸入字符串中以'('和以')'開頭標記。

因此,該函數將如下所示:

1) foo("abc") == ["a", "b", "c"] 2) foo("a(b)c") == ["a", ["b"], "c"] 3) foo("a(b(c))") == ["a", ["b", ["c"]]] 4) foo("a(b(c)") == error: closing bracket is missing 5) foo("a(b))c") == error: opening bracket is missing 6) foo("a)b(c") == error: opening bracket is missing 

注意:我更喜歡純粹功能性的解決方案。

 

解決方案


def foo(s): def foo_helper(level=0): try: token = next(tokens) except StopIteration: if level != 0: raise Exception('missing closing paren') else: return [] if token == ')': if level == 0: raise Exception('missing opening paren') else: return [] elif token == '(': return [foo_helper(level+1)] + foo_helper(level) else: return [token] + foo_helper(level) tokens = iter(s) return foo_helper() 

和,

>>> foo('a((b(c))d)(e)') ['a', [['b', ['c']], 'd'], ['e']]
 
        
本文首發於Python黑洞網,博客園同步更新


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM