如何根据空格和正斜杠等特定字符拆分Python列表?

AP1*_*100 6 python split list concatenation python-3.x

假设您有 python 列表:

a = ["a", " ", "b", "i", "g", " ", "d", "o", "g", " ", "b", "i", "t", " ", "m", "e"]
Run Code Online (Sandbox Code Playgroud)

有没有办法分割这个列表,这样你就可以得到:

a = [["a"],["big"],["dog"],["bit"],["me"]]
Run Code Online (Sandbox Code Playgroud)

或类似的?

moz*_*way 15

使用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]
Run Code Online (Sandbox Code Playgroud)

输出:[['a'], ['big'], ['dog'], ['bit'], ['me']]

  • 将 `lambda x: x!=' '` 调整为 `lambda x: x not in {' ', '/'}` 以处理标题中提到的空格和正斜杠分割的情况。 (2认同)

fun*_*man 11

像这样的东西:

>>> 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']]
Run Code Online (Sandbox Code Playgroud)


Meh*_*far 8

尝试在一行中执行此操作:

[[i] for i in "".join(a).split()]
Run Code Online (Sandbox Code Playgroud)