我有这个字符串:
[a [a b] [c e f] d]
我想要这样的列表
lst[0] = "a"
lst[1] = "a b"
lst[2] = "c e f"
lst[3] = "d"
我认为我目前的实现不是优雅/Pythonic 的是两个递归函数(一个用'['分割 另一个用 ']' ) 但我相信它可以 使用列表理解或正则表达式完成(但我想不出一个明智的方法来做到这一点)。
有什么想法吗?
请您参考如下方法:
实际上这并不是一个递归数据结构,注意 a 和 d 在不同的列表中。您只是在括号字符上拆分字符串并去除一些空白。
我相信有人能找到更干净的东西,但如果你想要一个像下面这样的单线东西应该让你接近:
parse_str = '[a [a b] [c e f] d]'
lst = [s.strip() for s in re.split('[\[\]]', parse_str) if s.strip()]
>>>lst
['a', 'a b', 'c e f', 'd']
