python - 在列表中拆分字符串但保留分隔符
问题描述
我有一个字符串列表:
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)']
解决方案
代码:
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)']
推荐阅读
- php - 如何用户查询生成器 phalcon
- mysql-workbench - 用户 'root' 从主机到 localhost:3306 的服务器的连接尝试失败:Workbench
- sql-server - 存储过程插入联结表
- laravel - 如何将数组插入 BD Laravel
- javascript - JavaScript:搜索 URL 参数并将其删除,包括值
- python - 将导入的函数设置为静态字典中的成员
- mips - 如何将输入字符串从用户传递到 MIPS 程序
- python - 需要在 if 语句中嵌套 if 语句的指导
- c# - EF Core 2.0 一对一 - 有什么关系?
- mysql - MySQL - 仅根据值从一个表中填充