我的代码是:
>>> lis=['ALRAGUL','AKAL','to7a']
>>> for i in lis:
if i.startswith('AL'):
j=lis[lis.index(i)+1]
L=list(itertools.repeat(j, 2))
lis[lis.index(i)+1]=L
lis[lis.index(i)+1]=i[2: ]
lis[lis.index(i)]='AL'
>>> print lis
['AL', 'RAGUL', 'to7a']
但我希望结果成为:
['AL', 'RAGUL','AKAL' 'to7a']
我希望它以某种方式表达一般意义,即代码适用于任何单词以及它们的任何排列 例如,我希望它在任何条件下分割('AL') 很多:)
答案 0 :(得分:2)
这样的东西?
def separate(lst, chunk):
for n in lst:
if n.startswith(chunk):
for x in n.partition(chunk)[1:]:
yield x
else:
yield n
输出:
In [104]: list(separate(['ALRAGUL','AKAL','to7a'], 'AL'))
Out[104]: ['AL', 'RAGUL', 'AKAL', 'to7a']
答案 1 :(得分:2)
应该这样做:
>>> lis = ['ALRAGUL', 'AKAL', 'to7a']
>>> for i, s in list(enumerate(lis)):
... if s.startswith('AL'):
... lis[i:i+1] = ['AL', s[2:]]
...
>>> lis
['AL', 'RAGUL', 'AKAL', 'to7a']
>>>
答案 2 :(得分:1)
另一种选择:
from itertools import chain
import re
print filter(None, chain.from_iterable(re.split('^(AL)', el) for el in lis))
或者:
filter(None, chain.from_iterable(map(re.compile ('^(AL)').split, lis)))