Gibt es eine Funktion in Python eine Zeichenfolge zu teilen, ohne die Räume zu ignorieren?

StackOverflow https://stackoverflow.com/questions/113534

  •  02-07-2019
  •  | 
  •  

Frage

Gibt es eine Funktion in Python eine Zeichenfolge zu teilen, ohne die Räume in der Ergebnisliste zu ignorieren?

Z. B:

s="This is the string I want to split".split()

gibt mir

>>> s
['This', 'is', 'the', 'string', 'I', 'want', 'to', 'split']

Ich möchte so etwas wie

['This',' ','is',' ', 'the',' ','string', ' ', .....]
War es hilfreich?

Lösung

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

Mit den Erfassungs Klammern in re.split () bewirkt, dass die Funktion, die Separatoren als auch zurück.

Andere Tipps

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

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

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

Dumme Antwort nur für das Heck von ihm:

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

Der harte Teil mit dem, was Sie zu tun versuchen, ist, dass Sie es nicht spalten auf ein Zeichen geben. split () explodiert eine Zeichenfolge auf dem Zeichen, das Sie es schaffen, und entfernt das Zeichen.

Vielleicht kann dies 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 ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top