python - 在每次出现以特定子字符串开头的元素时将列表拆分为子列表
问题描述
我有一个包含一堆字符串的大列表。我需要将原始列表的元素排序为嵌套列表,由它们在列表中的位置确定。换句话说,我需要将原始列表分解为子列表,其中每个子列表包含位于以“ABC”开头的元素之间的所有元素,然后将它们连接在一起作为嵌套列表。
所以原来的名单是:
all_results = ['ABCAccount', 'def = 0', 'gg = 0', 'kec = 0', 'tend = 1234567890', 'ert = abc', 'sed = target', 'id = sadfefsd3g3g24b24b', 'ABCAccount', 'def = 0', 'gg = 0', 'kec = 0', 'tend = NA', 'ert = abc', 'sed = source', 'id = sadfefsd3g3g24b24b', 'ABCAdditional', 'addkey = weds', 'addvalue = false', 'ert = abc', 'sed = target', 'id = sadfefsd3g3g24b24b', 'time_zone = EDT’]
我需要返回:
split_results = [['ABCAccount','def = 0', 'gg = 0', 'kec = 0', 'tend = 1234567890', 'ert = abc', 'sed = target', 'id = sadfefsd3g3g24b24b'],['ABCAccount', 'def = 0', 'gg = 0', 'kec = 0', 'tend = NA', 'ert = abc', 'sed = source', 'id = sadfefsd3g3g24b24b'],['ABCAdditional', 'addkey = weds', 'addvalue = false', 'ert = abc', 'sed = target', 'id = sadfefsd3g3g24b24b', 'time_zone = EDT’]]
我尝试了以下方法:
split_results = [l.split(',') for l in ','.join(all_results).split('ABC')]
解决方案
您可以直接从原始列表中工作:
def make_split( lst ):
if len(lst) == 0:
return []
r0 = []
r1 = []
for s in lst:
if s.startswith("ABC"):
if r1:
r0.append(r1)
r1 = []
r1.append(s)
return r0 + [r1]
推荐阅读
- angular - 永远不会在带有单元测试 angular + jasmine 和 SpyOn 的 switchMap 中调用函数
- excel - 日历中的员工缺勤(vlookup?)
- ios - 运行单元测试时每隔一次Xcode 10“无法安装此应用程序”
- sql-server - 在分子和/或分母中添加转换为小数?
- django - 从 Django 表单中清除“ChoiceField”
- airflow - 使用环境变量在 Airflow 中设置 Google Cloud 连接
- reactjs - React Select 与 Custom MultiValueContainer 和 Apollo Mutation 不合作
- spring-cloud - Spring Cloud Gateway——通过调度刷新路由
- typescript - TypeScript:多维数组参数的正确方法
- visual-studio - 不出现调试图标