按字符串拆分列表和字符串列表

ast*_*tex 2 python split list

是否有一种方便的pythonic方法来通过搜索字符串拆分列表(即使列表包含非字符串并具有嵌套列表).例如,假设我想将以下内容拆分为',':

[[ 'something', ',', 'eh' ], ',', ['more'], ',', 'yet more', '|', 'even more' ]
Run Code Online (Sandbox Code Playgroud)

这会变成:

[[[ 'something', ',', 'eh' ]], [['more']], ['yet more', '|', 'even more']]
Run Code Online (Sandbox Code Playgroud)

roo*_*oot 7

看看itertools.groupby:

In [1]: from itertools import groupby

In [2]: lst = [[ 'something', ',', 'eh' ], ',', ['more'], ',', 'yet more', '|', 'even more' ]

In [3]: [list(group) for key, group in groupby(lst, lambda x: x!=',') if key]
Out[3]: [[['something', ',', 'eh']], [['more']], ['yet more', '|', 'even more']]
Run Code Online (Sandbox Code Playgroud)

它基本上将列表中的项目拆分为基于条件(item != ',')if k的组,并且理解检查过滤出的组False - 即等于的项目','.

In [4]: for key, group in groupby(lst, lambda x: x!=','):
   ...:     print key, list(group)
   ...:     
True [['something', ',', 'eh']]
False [',']
True [['more']]
False [',']
True ['yet more', '|', 'even more']
Run Code Online (Sandbox Code Playgroud)