How to split a python list based on specific characters like spaces and forward slashes?

Question:

Suppose that you have the python list:

a = ["a", " ", "b", "i", "g", " ", "d", "o", "g", " ", "b", "i", "t", " ", "m", "e"]

Is there a way to split this list such that you get:

a = [["a"],["big"],["dog"],["bit"],["me"]]

or similar?

Asked By: AP100

||

Answers:

Something like this:

>>> a = ["a", " ", "b", "i", "g", " ", "d", "o", "g", " ", "b", "i", "t", " ", "m", "e"]
>>> ''.join(a)
'a big dog bit me'
>>> [[word] for word in ''.join(a).split()]
[['a'], ['big'], ['dog'], ['bit'], ['me']]
Answered By: funnydman

Using itertools.groupby:

a = ['a', ' ', 'b', 'i', 'g', ' ', 'd', 'o', 'g', ' ',
     'b', 'i', 't', ' ', 'm', 'e']

from itertools import groupby

out = [[''.join(g)] for k, g in groupby(a, lambda x: x!=' ') if k]

output: [['a'], ['big'], ['dog'], ['bit'], ['me']]

Answered By: mozway

Try this in one line:

[[i] for i in "".join(a).split()]
Answered By: Mehrdad Pedramfar

Another possible solution:

a = ["a", " ", "b","i","g"," ","d","o", "g"," ","b","i","t"," ","m","e"]
[*map(lambda x: [x], ''.join(a).split())]

#> [['a'], ['big'], ['dog'], ['bit'], ['me']]
Answered By: PaulS
a = ["a", " ", "b", "i", "g", " ", "d", "o", "g", " ", "b", "i", "t", " ", "m", "e"]
l = []
for i in ''.join(a).split():
    nl = [i]
    l.append(nl)
print(l)
Answered By: disha4002