【发布时间】:2017-12-30 01:47:52
【问题描述】:
在如下列表中:
biglist = ['X', '1498393178', '1|Y', '15496686585007',
'-82', '-80', '-80', '3', '3', '2', '|Y', '145292534176372',
'-87', '-85', '-85', '3', '3', '2', '|Y', '11098646289856',
'-91', '-88', '-89', '3', '3', '2', '|Y', '35521515162112',
'-82', '-74', '-79', '3', '3', '2', '|Z',
'0.0', '0.0', '0', '0', '0', '0', '0', '4', '0', '154']
可能有一些数字元素前面有一个字符。我想将其分解为如下子列表:
smallerlist = [
['X', '1498393', '1'],
['Y', '1549668', '-82', '-80', '-80', '3', '3', '2', ''],
['Y', '1452925', '-87', '-85', '-85', '3', '3', '2', ''],
['Y', '3552151', '-82', '-74', '-79', '3', '3', '2', ''],
['Z', '0.0', '0.0', '0', '0', '0', '0', '0', '4', '0', '154']
]
如您所知,根据角色的不同,列表可能看起来很相似。否则,它们可能具有不同数量的元素,或者完全不同的元素。主要分隔符是"|" 字符。我尝试运行以下代码来拆分列表,但我得到的只是列表中相同的、更大的列表。即len(list) == 1的列表。
import itertools
delim = '|'
smallerlist = [list(y) for x, y in itertools.groupby(biglist, lambda z: z == delim)
if not x]
任何想法如何成功拆分它?
【问题讨论】: