2008-09-22 8 views

Antwort

40
>>> import re 
>>> re.split(r"(\s+)", "This is the string I want to split") 
['This', ' ', 'is', ' ', 'the', ' ', 'string', ' ', 'I', ' ', 'want', ' ', 'to', ' ', 'split'] 

die Erfassung Klammern in re.split Verwendung() bewirkt, dass die Funktion um die Separatoren ebenfalls zurückzugeben.

+0

Dies ist eine sauberere Lösung als die, die ich oben gepostet habe. – rossp

1

Der schwierige Teil mit dem, was Sie versuchen zu tun, dass Sie nicht sind ihm einen Charakter geben, auf den er sich spalten kann. split() explodiert eine Zeichenfolge des von Ihnen angegebenen Zeichens und entfernt dieses Zeichen.

kann dies vielleicht helfen:

s = "String to split" 
mylist = [] 
for item in s.split(): 
    mylist.append(item) 
    mylist.append(' ') 
mylist = mylist[:-1] 

Unordentlich, aber es wird den Trick für Sie tun ...

+0

mit einem zusätzlichen Raum, der am Ende nicht existiert ... – Mez

+0

ich habe das gerade aktualisiert Code zu r Entferne den letzten Raum. Das heißt, es ist immer noch nicht der beste Weg, es zu tun, nur * a * Möglichkeit, es zu tun :) – rossp

4

Ich glaube nicht, gibt es eine Funktion in der Standard-Bibliothek, die von selbst tut, sondern „Partition“ kommt in der Nähe

Der beste Weg, wahrscheinlich reguläre Ausdrücke zu verwenden ist (das ist, wie ich tun würde dies in jeder Sprache)

import re 
print re.split(r"(\s+)", "Your string here") 
2

Dumme Antwort nur für das Heck von ihm:

mystring.replace(" ","! !").split("!") 
Verwandte Themen