I have a lists of lists called "lines" that looks like this:
[['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'],
['REF', '0F', '708066255'],
['REF', '1L', '708066255'],
['DTP', '303', 'D8', '20240901'],
['DTP', '356', 'D8', '20240801'],
['NM1', 'IL', '1', 'FIGUEROA', 'LILIET', '', '', '', '34', '536899858'],
['N3', '2670 SO A W GRIMES BO', '#6102'],
['N4', 'ROUND ROCK', 'TX', '786642849', '', 'CY', '246'],
['DMG', 'D8', '19931219', 'F', '', 'H'],
['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'],
['REF', '0F', '811229070'],
['REF', '1L', '811229070'],
['DTP', '303', 'D8', '20240901'],
['DTP', '356', 'D8', '20240201'],
['NM1', 'IL', '1', 'MORILLO RUZA', 'OMARLY', 'V', '', '', '34', '000000000'],
['PER', 'IP', '', 'HP', '5129233526'],
['N3', '154 TERRI TL'],
['N4', 'ELGIN', 'TX', '786218937', '', 'CY', '011'],
['DMG', 'D8', '20040628', 'F', '', 'H']]
What I need is to group the lists into new lists wherever the 'INS' element appears in one of the lists. The output should look like:
[[['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'],
['REF', '0F', '708066255'],
['REF', '1L', '708066255'],
['DTP', '303', 'D8', '20240901'],
['DTP', '356', 'D8', '20240801'],
['NM1', 'IL', '1', 'FIGUEROA', 'LILIET', '', '', '', '34', '536899858'],
['N3', '2670 SO A W GRIMES BO', '#6102'],
['N4', 'ROUND ROCK', 'TX', '786642849', '', 'CY', '246'],
['DMG', 'D8', '19931219', 'F', '', 'H']],
[['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'],
['REF', '0F', '811229070'],
['REF', '1L', '811229070'],
['DTP', '303', 'D8', '20240901'],
['DTP', '356', 'D8', '20240201'],
['NM1', 'IL', '1', 'MORILLO RUZA', 'OMARLY', 'V', '', '', '34', '000000000'],
['PER', 'IP', '', 'HP', '5129233526'],
['N3', '154 TERRI TL'],
['N4', 'ELGIN', 'TX', '786218937', '', 'CY', '011'],
['DMG', 'D8', '20040628', 'F', '', 'H']]]
Im unsure how to do this
iterate through intial list, check if first element is INS or not, and based on that structure your final output
below is example
x = [
['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'],
['REF', '0F', '708066255'], ['REF', '1L', '708066255'],
['DTP', '303', 'D8', '20240901'],
['DTP', '356', 'D8', '20240801'],
['NM1', 'IL', '1', 'FIGUEROA', 'LILIET', '', '', '', '34', '536899858'],
['N3', '2670 SO A W GRIMES BO', '#6102'],
['N4', 'ROUND ROCK', 'TX', '786642849', '', 'CY', '246'],
['DMG', 'D8', '19931219', 'F', '', 'H'],
['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'],
['REF', '0F', '811229070'],
['REF', '1L', '811229070'],
['DTP', '303', 'D8', '20240901'],
['DTP', '356', 'D8', '20240201'],
['NM1', 'IL', '1', 'MORILLO RUZA', 'OMARLY', 'V', '', '', '34', '000000000'],
['PER', 'IP', '', 'HP', '5129233526'],
['N3', '154 TERRI TL'],
['N4', 'ELGIN', 'TX', '786218937', '', 'CY', '011'],
['DMG', 'D8', '20040628', 'F', '', 'H']
]
sol = []
tmp = []
for i in x:
if i[0]!="INS":
tmp.append(i)
else:
if tmp:
sol.append(tmp)
tmp = [i]
if tmp:
sol.append(tmp)
print(sol)
# output
"""
[
[
['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'],
['REF', '0F', '708066255'],
['REF', '1L', '708066255'],
['DTP', '303', 'D8', '20240901'],
['DTP', '356', 'D8', '20240801'],
['NM1', 'IL', '1', 'FIGUEROA', 'LILIET', '', '', '', '34', '536899858'],
['N3', '2670 SO A W GRIMES BO', '#6102'],
['N4', 'ROUND ROCK', 'TX', '786642849', '', 'CY', '246'],
['DMG', 'D8', '19931219', 'F', '', 'H']
],
[
['INS', 'Y', '18', '024', '07', 'A', '', '', 'TE'],
['REF', '0F', '811229070'],
['REF', '1L', '811229070'],
['DTP', '303', 'D8', '20240901'],
['DTP', '356', 'D8', '20240201'],
['NM1', 'IL', '1', 'MORILLO RUZA', 'OMARLY', 'V', '', '', '34', '000000000'],
['PER', 'IP', '', 'HP', '5129233526'],
['N3', '154 TERRI TL'],
['N4', 'ELGIN', 'TX', '786218937', '', 'CY', '011'],
['DMG', 'D8', '20040628', 'F', '', 'H']
]
]
"""