Split-String basierend auf einem regulären Ausdruck

Ich habe die Ausgabe eines Befehls in tabellarischer Form. Ich analysiere diese Ausgabe aus einer Ergebnisdatei und speichere sie in einem String. Jedes Element in einer Zeile wird durch ein oder mehrere Whitespace Zeichen getrennt, also verwende ich regelmäßige Ausdrücke, um 1 oder mehr Leerzeichen zu entsprechen und es zu teilen. Zwischen jedem Element wird jedoch ein Leerzeichen eingefügt:

>>> str1="abcd" # spaces are irregular >>> str1 'abcd' >>> str2=re.split("( )+", str1) >>> str2 ['a', ' ', 'b', ' ', 'c', ' ', 'd'] # 1 space element between!!! 

Gibt es einen besseren Weg, dies zu tun?

Nach jedem Split wird str2 an eine Liste angehängt.

4 Solutions collect form web for “Split-String basierend auf einem regulären Ausdruck”

Durch die Verwendung von ( , ) , Sie sind die Erfassung der Gruppe, wenn Sie sie einfach entfernen Sie haben nicht dieses Problem.

 >>> str1 = "abcd" >>> re.split(" +", str1) ['a', 'b', 'c', 'd'] 

Allerdings gibt es keine Notwendigkeit für regex, str.split ohne jegliche Trennzeichen spezifiziert wird dies durch Whitespace für Sie teilen. Das wäre der beste Weg in diesem Fall.

 >>> str1.split() ['a', 'b', 'c', 'd'] 

Wenn du wirklich regex wünschst, kannst du das benutzen ( '\s' repräsentiert den Whitespace und es ist klarer):

 >>> re.split("\s+", str1) ['a', 'b', 'c', 'd'] 

Oder Sie können alle Nicht-Whitespace-Charaktere finden

 >>> re.findall(r'\S+',str1) ['a', 'b', 'c', 'd'] 

Die str.split Methode entfernt automatisch alle Leerzeichen zwischen den Elementen:

 >>> str1 = "abcd" >>> str1.split() ['a', 'b', 'c', 'd'] 

Docs sind hier: http://docs.python.org/library/stdtypes.html#str.split

Wenn Sie re.split und das Split-Pattern Capture-Gruppen enthält, werden die Gruppen in der Ausgabe beibehalten. Wenn Sie das nicht wollen, verwenden Sie stattdessen eine nicht erfassende Gruppe.

Es ist ganz einfach eigentlich. Versuche dies:

 str1="abcd" splitStr1 = str1.split() print splitStr1 
  • Python Streifen XML-Tags aus Dokument
  • Regelmäßiger Ausdruck, der auf ein Spiel aus dem früheren Teil des Ausdrucks verweist
  • Python liest die Datei bis zum Match, liest bis zum nächsten Muster
  • Überprüfen Sie, ob eine Variable SRE_Match ist
  • Mit python, entfernen HTML-Tags / Formatierung aus einer Zeichenfolge
  • Regex python mit Unicode (japanisch) Charakter Problem
  • Wie bekomme ich Zeilen zwischen dem gleichen Muster mit Python Regex
  • Mehrfachvererbung in kratzigen Spinnen
  • Regex-Matching zwischen zwei Strings?
  • Python-regulärer Ausdruck mit dem OR-Operator
  • Einige Charaktere, die '\' vor ihnen verwenden müssen, um zu löschen
  • Python ist die beste Programmiersprache der Welt.