How to parse a string and return a nested array?

前端 未结 7 2189
你的背包
你的背包 2020-11-30 07:48

I want a Python function that takes a string, and returns an array, where each item in the array is either a character, or another array of this kind. Nested arrays are mark

7条回答
  •  鱼传尺愫
    2020-11-30 08:49

    Recursion is something very powerful that you should try to use.

    Here is my code:

    
    
        # encoding: utf-8
        # Python33
    
        def check(s):
            cs = [c for c in s if c == '(' or c ==')']
            flag = 0
            for c in cs:
                if flag < 0:
                    return 'opening bracket is missing'        
                if c == '(':
                    flag += 1
                else:
                    flag -= 1
            if flag < 0:
                return 'opening bracket is missing'
            elif flag > 0:
                return 'closing bracket is missing'
            else:
                return ''
    
        def _foo(cs):
            result = []
            while len(cs):
                c = cs.pop(0)
                if c == '(':
                    result.append(_foo(cs))
                elif c == ')':
                    return result
                else:
                    result.append(c)
            return result
    
        def foo(s):
            valiad = check(s)
            if valiad:
                return valiad
            cs = list(s)
            return _foo(cs)
    
        if __name__ == '__main__':
            ss = ["abc","a(b)c","a(b(c))","a(b(c)","a(b))c","a)b(c"]
            for s in ss:
                print(foo(s))
    
    

提交回复
热议问题