0

If I have a list containing strings like:

my_list = ['', 
'EU NNP I-NP B-ORG', 
'rejects VBZ I-VP O', 
'British JJ I-NP B-MISC',
'. . O O', 
'', 
'Peter NNP I-NP B-PER', 
'Blackburn NNP I-NP I-PER',
'', 
'BRUSSELS NNP I-NP B-LOC',
'1996-08-22 CD I-NP O', '']

I would like to split this list into a nested list of tuples wherever there is a blank string in the list like the below

list_of_tuples = [[('EU NNP I-NP B-ORG'), ('rejects VBZ I-VP O'), ('British JJ I-NP B-MISC'),('. . O O')], 
[('Peter NNP I-NP B-PER'), ('Blackburn NNP I-NP I-PER')],
[('BRUSSELS NNP I-NP B-LOC'),('1996-08-22 CD I-NP O', '')]]
omgpython
  • 15
  • 4
  • 2
    Does this answer your question? [Splitting a list based on a delimiter word](https://stackoverflow.com/questions/15357830/splitting-a-list-based-on-a-delimiter-word) – SuperStormer Jun 10 '22 at 17:12

1 Answers1

1
ml = [tuple([x]) for x in my_list]
inds = [i for i in range(len(my_list)) if my_list[i] == ""]
[ml[inds[i-1] + 1:inds[i]] for i in range(1, len(inds))]
# [[('EU NNP I-NP B-ORG',),
#   ('rejects VBZ I-VP O',),
#   ('British JJ I-NP B-MISC',),
#   ('. . O O',)],
#  [('Peter NNP I-NP B-PER',), ('Blackburn NNP I-NP I-PER',)],
#  [('BRUSSELS NNP I-NP B-LOC',), ('1996-08-22 CD I-NP O',)]]
d.b
  • 32,245
  • 6
  • 36
  • 77