Python按顺序拆分字符串中的一些项目

时间:2016-10-20 08:04:13

标签: python

设置字符串:

'abcdeabcdeabcdeabcdeabcdeabcde' 
分开:

'cdebbe' 

输出:

'ab c d e a b cdea b cd e abcdeabcde'

这意味着拆分字符串

'abcdeabcdeabcdeabcdeabcdeabcde' 

按索引

[2,3,4,6,10,14]

如何通过Python执行此操作?此问题与Split a list into parts based on a set of indexes in Python类似 如果按照答案,输出结果为:

['ab', 'c', 'd', 'ea', 'bcde', 'abcd', 'eabcdeabcdeabcde']

不是预期的输出。

3 个答案:

答案 0 :(得分:2)

getApplicationContext()

但是你的字符串不包含'cdebbe'子字符串,所以result是一个包含一个字符串的列表:

'abcdeabcdeabcdeabcdeabcdeabcde'.split('cdebbe')

答案 1 :(得分:1)

s = 'abcdeabcdeabcdeabcdeabcdeabcde'
new = []

for i,char in enumerate('cdebbe'):
    new.append(s.split(char)[:i+1])

print new
>>[['ab'], ['abc', 'eabc'], ['abcd', 'abcd', 'abcd'], ['a', 'cdea', 'cdea', 'cdea'], ['a', 'cdea', 'cdea', 'cdea', 'cdea'], ['abcd', 'abcd', 'abcd', 'abcd', 'abcd', 'abcd']]

这会将你的字符串除以'cdebbe'中的所有字母。

对此进行一些操作,我们可以获得您需要的响应。但这并不完全符合您的预期。

new2 = []
for i, x in enumerate(new):
    new2.append(new[i][-1])

print new2 
>>['ab', 'eabc', 'abcd', 'cdea', 'cdea', 'abcd']

快速解释:'ab'是字符串拆分为'c'的第一部分,'eabc'是字符串的第二部分,在'd'等分割时等等

答案 2 :(得分:1)

这非常符合您的预期输出,但我不知道'cdebbe'到达终点时的逻辑是什么。

s = 'abcdeabcdeabcdeabcdeabcdeabcde'
split = 'cdebbe'

result = []
for c in split:
    left, center, s = s.partition(c)
    if left:
        result.append(left)
    result.append(center)

print(' '.join(result)) # ab c d e a b cdea b cd e