Splitting a list based on a delimiter word
list, python, split
Solution
I would use a generator:
def group(seq, sep):
g = []
for el in seq:
if el == sep:
yield g
g = []
g.append(el)
yield g
ex = ['A', 'WORD', 'B' , 'C' , 'WORD' , 'D']
result = list(group(ex, 'WORD'))
print(result)
This prints
[['A'], ['WORD', 'B', 'C'], ['WORD', 'D']]
The code accepts any iterable, and produces an iterable (which you don't have to flatten into a list if you don't want to).
Problem
I have a list containing various string values. I want to split the list whenever I see `WORD`. The result will be a list of lists (which will be the sublists of original list) containing exactly one instance of the `WORD` I can do this using a loop but is there a more pythonic way to do achieve this ? Example = `['A', 'WORD', 'B' , 'C' , 'WORD' , 'D']` result = `[['A'], ['WORD','B','C'],['WORD','D']]` This is what I have tried but it actually does not achieve what I want since it will put `WORD` in a different list that it should be in: ``` def split_excel_cells(delimiter, cell_data): result = [] temp = [] for cell in cell_data: if cell == delimiter: temp.append(cell) result.append(temp) temp = [] else: temp.append(cell) return result ```