Skip to main content
 首页 » 编程设计

python之在 Python 中标记代码块

2025年05月04日21jillzhang

我有这个字符串:

[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']