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 
  • In Regex, was bedeutet \ w * bedeuten?
  • Python Regex suchen
  • Zählen von Bigrammen (Paar von zwei Wörtern) in einer Datei mit Python
  • Regexp findet am längsten gemeinsamen Präfix von zwei Strings
  • Python: genaue Übereinstimmung finden
  • Wie man die Breite und Höhe x2 mit Python Regular machen
  • Python regex getrennte raumbegrenzte Wörter in eine Liste
  • Python regex - r Präfix
  • Matching 2 reguläre Ausdrücke in Python
  • Python-re: Wie kann ich mit einem Alpha-Zeichen übereinstimmen?
  • Wie man hashtag, @user, Link eines tweet mit regulärem Ausdruck zu entfernen
  • Python ist die beste Programmiersprache der Welt.