2016-10-20 2 views
0

Surpose die Zeichenfolge:Python geteilt String mit einigen Elementen der Zeichenfolge um

'abcdeabcdeabcdeabcdeabcdeabcde' 

Spaltung von:

'cdebbe' 

Ausgang:

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

Das bedeutet, Split String

'abcdeabcdeabcdeabcdeabcdeabcde' 

von Indizes

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

Wie dies von Python zu tun? Diese Frage ist ähnlich wie Split a list into parts based on a set of indexes in Python Wenn die Antworten folgen die löschte ist:

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

ist nicht die erwartete Ausgabe.

+5

Die Logik der Ausgabe ist ziemlich unklar – Itay

+0

Ihre Zeichenfolge enthält keine "Cdebbe". – danielfranca

+0

Zuerst mit "c" und dann mit "d" teilen. – Tom

Antwort

1

Diese recht passt zu Ihrer erwarteten Ausgabe, aber ich weiß nicht, was die Logik ist, wenn das Ende erreicht.

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 
+0

Das war's! Danke, das Ende ist egal. – Tom

2
'abcdeabcdeabcdeabcdeabcdeabcde'.split('cdebbe') 

Aber Ihre Zeichenfolge enthält nicht ‚cdebbe‘ String, so ergibt sich eine Liste mit einer Saite:

['abcdeabcdeabcdeabcdeabcdeabcde'] 
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']] 

Diese Zeichenfolge von allen Buchstaben in ‚cdebbe‘ unabhängig aufgeteilt werden .

ein bisschen Manipulation zu tun, können wir die Antwort erhalten, die Sie benötigen. Aber es ist nicht genau das, was Sie erwartet haben.

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

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

Schnell Erklärung: ‚ab‘ ist der erste Teil des Strings Split im ‚c‘, ‚EABC‘ ist der zweite Teil der Zeichenfolge, wenn Split auf ‚d‘ etc etc

Verwandte Themen