In Python 3.x, wie würde ich eine Zeichenfolge wie folgt aufgeteilt:Split-String nur nach Raum
['foo ', 'bar ', 'hello ', 'world ']
In Python 3.x, wie würde ich eine Zeichenfolge wie folgt aufgeteilt:Split-String nur nach Raum
['foo ', 'bar ', 'hello ', 'world ']
Nur bei Whitespaces aufgeteilt:
foo bar hello world
So ist die Ausgabe eine Liste wie wäre und füge sie dann wieder hinzu.
a = 'foo bar hello world'
splitted = a.split() # split at ' '
splitted = [x + ' ' for x in splitted] # add the ' ' at the end
Oder wenn Sie es ein bisschen mehr Phantasie:
splitted = ['{} '.format(item) for item in a.split()]
Wenn Sie behandeln möchten und willkürliche Folgen von Whitespace zu erhalten, werden Sie einen regulären Ausdruck benötigen:
>>> import re
>>> re.findall(r'(?:^|\S+)\s*', ' foo \tbar hello world')
[' ', 'foo \t', 'bar ', 'hello ', 'world']
Dies ist nützlich und ich behalte diese Lösung im Hinterkopf, aber ich muss keine zusätzlichen Leerzeichen halten. –
Funktioniert das auch mit mehreren Leerzeichen, dh die korrekte Menge wird wieder eingefügt? – usr2564301
Das macht es mehrdeutig, wo die Saite aufgeteilt werden soll. Nach dem ersten, zweiten, letzten? Da er diese Information nicht angegeben hat (und ich habe nicht darüber nachgedacht), halte ich das nicht für notwendig. – MSeifert
@RadLexus: Nein, wird es nicht. Es ist nicht möglich, willkürliche Leerzeichen mit einfachen einfachen String-Methoden wie dieser zu erhalten. – ShadowRanger