Tokenize eine Zeichenfolge, die Trennzeichen in Python hält

Gibt es ein Äquivalent zu str.split in Python, die auch die Trennzeichen zurückgibt?

Ich muss das Whitespace-Layout für meine Ausgabe beibehalten, nachdem ich einige der Token verarbeitet habe.

  • Httplib CannotSendRequest Fehler in WSGI
  • Können Pandas automatisch Daten erkennen?
  • Wie kann ich aus dem Python C-Code behaupten?
  • Python selenium selenium.common.exceptions.StaleElementReferenceException error
  • Wie kann ich die Befehlszeile vom Schließen in der Pythonstart stoppen?
  • Python threading.Event () - Sicherstellen, dass alle wartenden Threads auf event.set () aufwachen
  • Beispiel:

     >>> s="\tthis is an example" >>> print s.split() ['this', 'is', 'an', 'example'] >>> print what_I_want(s) ['\t', 'this', ' ', 'is', ' ', 'an', ' ', 'example'] 

    Vielen Dank!

  • DOCX-Datei lesen und schreiben
  • Django QuerySet Benutzerdefinierte Bestellung nach ID
  • Der Funktionsname ist in der Pythonenklasse undefiniert
  • Wie man ein Histogramm in ipython Notebook mit ggplot2 (für Python)
  • Broken Pipe, wenn ich versuche, großen Blob mit pymysql einzufügen
  • Segmentierungsfehler (Core Dumped), Ausführung eines Thread
  • 5 Solutions collect form web for “Tokenize eine Zeichenfolge, die Trennzeichen in Python hält”

    Wie wäre es mit

     import re splitter = re.compile(r'(\s+|\S+)') splitter.findall(s) 
     >>> re.compile(r'(\s+)').split("\tthis is an example") ['', '\t', 'this', ' ', 'is', ' ', 'an', ' ', 'example'] 

    Das re Modul bietet diese Funktionalität:

     >>> import re >>> re.split('(\W+)', 'Words, words, words.') ['Words', ', ', 'words', ', ', 'words', '.', ''] 

    (Zitiert aus der Python-Dokumentation).

    Für Ihr Beispiel (Split auf Whitespace), verwenden Sie re.split('(\s+)', '\tThis is an example') .

    Der Schlüssel ist, um die Regex, auf die zu teilen in der Erfassung von Klammern zu umschließen. Auf diese Weise werden die Begrenzer zur Ergebnisliste hinzugefügt.

    Bearbeiten: Wie bereits erwähnt, werden selbstverständlich auch beliebige Vor- / Nachlaufbegrenzer zur Liste hinzugefügt. Um zu vermeiden, dass Sie die .strip() Methode auf Ihrer Eingabezeichenfolge zuerst verwenden können.

    Hast du das Pairing gesehen? Beispiel aus dem pyparsing wiki :

     >>> from pyparsing import Word, alphas >>> greet = Word(alphas) + "," + Word(alphas) + "!" >>> hello1 = 'Hello, World!' >>> hello2 = 'Greetings, Earthlings!' >>> for hello in hello1, hello2: ... print (u'%s \u2192 %r' % (hello, greet.parseString(hello))).encode('utf-8') ... Hello, World! → (['Hello', ',', 'World', '!'], {}) Greetings, Earthlings! → (['Greetings', ',', 'Earthlings', '!'], {}) 

    Danke Jungs für das Zeigen für das re Modul, ich versuche immer noch zu entscheiden, dass und mit meiner eigenen Funktion, die eine Sequenz zurückgibt …

     def split_keep_delimiters(s, delims="\t\n\r "): delim_group = s[0] in delims start = 0 for index, char in enumerate(s): if delim_group != (char in delims): delim_group ^= True yield s[start:index] start = index yield s[start:index+1] 

    Wenn ich Zeit hätte, würde ich sie benennen xD

    Python ist die beste Programmiersprache der Welt.