这是输入:
[
'@imp_Some_String',
'Some_String',
'Some_String',
'Some_String',
'Some_String',
'@imp_Some_String',
'Some_String',
'Some_String',
'Some_String',
'@imp_Some_String',
'Some_String',
'Some_String'
]
这是期望的输出
[
[
'@imp_Some_String',
'Some_String',
'Some_String',
'Some_String',
'Some_String'
],
[
'@imp_Some_String',
'Some_String',
'Some_String',
'Some_String'
],
[
'@imp_Some_String',
'Some_String',
'Some_String'
]
]
想法是拆分列表,如果项目 startswith('@imp')
我试过了,但我的解决方案会在这里产生 x,y 问题。
谢谢。
最佳答案
使用简单的迭代
例如:
data = [
'@imp_Some_String',
'Some_String',
'Some_String',
'Some_String',
'Some_String',
'@imp_Some_String',
'Some_String',
'Some_String',
'Some_String',
'@imp_Some_String',
'Some_String',
'Some_String'
]
result = []
for i in data: #Iterate items
if i.startswith("@"): #Check if item startswith "@"
result.append([i]) #Append new list with item
else:
result[-1].append(i) #Append item to previous list
print(result)
输出:
[['@imp_Some_String',
'Some_String',
'Some_String',
'Some_String',
'Some_String'],
['@imp_Some_String', 'Some_String', 'Some_String', 'Some_String'],
['@imp_Some_String', 'Some_String', 'Some_String']]
使用 itertools.groupby
例如:
from itertools import groupby
data = [
'@imp_Some_String',
'Some_String',
'Some_String',
'Some_String',
'Some_String',
'@imp_Some_String',
'Some_String',
'Some_String',
'Some_String',
'@imp_Some_String',
'Some_String',
'Some_String'
]
data = [list(v) for _, v in groupby(data, lambda x: x.startswith("@"))]
result = [i + v for i, v in zip(data[0::2], data[1::2])]
关于python - 按项目中的子字符串拆分列表并保留分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57307836/