【发布时间】:2020-03-31 11:49:51
【问题描述】:
我有一个字符串列表:
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)']
【问题讨论】:
-
顺便说一下,使用
is not None而不是!= None。 -
为什么结果中的元素比源中的元素多?
'fff'和'(ggg)'来自哪里?应该删除 () 的示例在哪里? -
为什么
'bbb ccc'在第二个问题中变成'bbb', 'ccc'? -
你应该使用
r'\('而不是'\(' -
[x for l in List for x in re.split(r'\s*(?=\()', l) if x],见ideone.com/WaNUoC