簡體   English   中英

每次出現元素時,將列表分為子列表,從特定子字符串開始

[英]Split list into sublists at every occurrence of element starting with specific substring

我有一個包含一串字符串的大列表。 我需要將原始列表的元素排序到一個嵌套列表中,這取決於它們在列表中的位置。 換句話說,我需要將原始列表分解為子列表,其中每個子列表包含所有以'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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM