2010-12-09 9 views
1

ich einen String haben und ich möchte eine Reihe von str zum Beispiel:Split-String in ein Array mit vielen Zeichen pro Artikel

"hello world" 
["hel", "lo ", "wor", "ld"] 

oder

["hell", "o wo", "rld"] 

Ich sehe, dass list(message) wäre in Ordnung, aber nur für

["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", ] 

Irgendwelche Ideen?

+0

Was sind Ihre Kriterien für die Aufteilung der Zeichenfolge? d.h. in eine bestimmte Anzahl von Teilen, in Teile einer bestimmten Länge usw.? –

Antwort

3
>>> s = 'hello world' 
>>> [s[i:i+3] for i in range(len(s)) if not i % 3] 
['hel', 'lo ', 'wor', 'ld'] 

Für eine allgemeinere Lösung (dh speziell definierte Splits), versuchen Sie diese Funktion:

def split_on_parts(s, *parts): 
    total = 0 
    buildstr = [] 
    for p in parts: 
     buildstr.append(s[total:total+p]) 
     total += p 
    return buildstr 

s = 'hello world' 
print split_on_parts(s, 3, 3, 3, 3) 
print split_on_parts(s, 4, 3, 4) 

, der die Ausgabe erzeugt:

['hel', 'lo ', 'wor', 'ld'] 
['hell', 'o w', 'orld'] 

OR wenn Sie wirklich in der Stimmung für einen Einzeiler:

def split_on_parts(s, *parts): 
    return [s[sum(parts[:p]):sum(parts[:p+1])] for p in range(len(parts))] 
+0

danke sehr nett. – Charles

2
>>> lst = ['he', 'llo', ' wo', 'rld'] 
>>> ''.join(lst) 
'hello world' 
>>> s = 'hello world' 
>>> list(s) 
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'] 

Das sind die Grundlagen; Wenn Sie spezielle Anforderungen haben, kommentieren Sie diesen Beitrag und ich werde meine Antwort aktualisieren.

+0

Es ist so erstaunlich! –

3
>>> def split_length(s, l): 
...  return [s[i:i+l] for i in range(0, len(s), l)] 
... 
>>> split_length("hello world", 3) 
['hel', 'lo ', 'wor', 'ld'] 
>>> split_length("hello world", 4) 
['hell', 'o wo', 'rld'] 
+0

+1, ich hätte gedacht, den Bereich Schritt zu verwenden. –

0
>>> s 
'hello world' 
>>> filter(lambda n: n != ' ', re.split("(o|wo)", s)) 
['hell', 'o', 'wo', 'rld'] 
>>> filter(lambda n: n != ' ', re.split("(lo|wor)", s)) 
['hel', 'lo', 'wor', 'ld'] 

Nicht sicher, wie (nach welchen Kriterien) genau es gemeint war allerdings geteilt werden.

1
`list` is a python key word. You can use list and indexing power of list to manipulate your result. 

In [5]: s = 'hello world' 

In [6]: s.split() 
Out[6]: ['hello', 'world'] 

In [7]: list(s) 
Out[7]: ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'] 
Verwandte Themen