首页 > 解决方案 > 在列表中拆分字符串但保留分隔符

问题描述

我有一个字符串列表:

List = ['aaa', 'bbb ccc', 'ddd (eee)']

我想在“(”之前的空白处或在“(”处拆分具有括号的元素,以防前面没有空格。但在这种情况下,我想保留括号。到目前为止,我已经提出如果有空白,则使用以下代码:

for l in List:
   if re.search('\(', l) != None:
       a,b = re.split(' (?=\()', l)
       print('True')
       List_2.append(a)
       List_2.append(b)
   else:
       List_2.append(l)

print(List_2)

两个问题:首先,是否有更简洁的版本,可能使用列表理解。其次,如何捕获没有空白“fff(ggg)”的案例。

最终列表应如下所示:

List_correct['aaa', 'bbb ccc', 'ddd', '(eee)', 'fff', '(ggg)']

标签: pythonregexlist

解决方案


代码:

List = ['aaa', 'bbb ccc', 'ddd (eee)', 'fff(ggg)']
result = [subitem for item in List for subitem in re.split(r"(?:\b|\s)(?=\()", item)]

输出:

>>>print(result)
['aaa', 'bbb ccc', 'ddd', '(eee)', 'fff', '(ggg)']

推荐阅读