Der Inhalt dieses Artikels befasst sich mit der Aufteilung von Zeichenfolgen in Python (mit Code). Ich hoffe, dass er für Sie hilfreich ist.
1. Anforderungen
Wir müssen die Zeichenfolge in verschiedene Felder aufteilen, aber die Trennzeichen (und die Leerzeichen zwischen den Trennzeichen) sind in der gesamten Zeichenfolge nicht konsistent.2. Lösung
Die Methode split() des String-Objekts kann nur sehr einfache Situationen verarbeiten und unterstützt keine Mehrfachtrennzeichen Situation. Wenn einige flexiblere Funktionen benötigt werden, sollte die Methode re.split() verwendet werden:
import re line='abc def ; ghi, jkl,mno, pkr' #分隔符:分号,都逗号,空格符,前后可以跟着任意数量的额外空格 result=re.split(r'\s*[;,\s]\s*',line) print(result)
Ergebnis:
['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']
3. Analyse
re.split() ist nützlich, da mehrere Muster für Trennzeichen angegeben werden können. In der obigen Lösung sind die Trennzeichen beispielsweise: Semikolon, Komma, Leerzeichen, und es können beliebig viele zusätzliche Leerzeichen folgen. Wie das von str.split() erhaltene Ergebnis ist das Endergebnis eine Feldliste.
Bei der Verwendung von re.split() müssen Sie vorsichtig sein, ob die einfangende Gruppe im regulären Ausdrucksmuster in Klammern enthalten ist.
Wenn Erfassungsgruppen verwendet werden, wird der passende Text auch in das Endergebnis einbezogen. Schauen Sie sich zum Beispiel den folgenden Fall an:
import re line='abc def ; ghi, jkl,mno, pkr' result=re.split(r'\s*(;|,|\s)\s*',line) print(result)
Ergebnis:
['abc', ' ', 'def', ';', 'ghi', ',', 'jkl', ',', 'mno', ',', 'pkr']
Es kann auch nützlich sein, das Trennzeichen in einem bestimmten Kontext zu erhalten. Um beispielsweise die Ausgabe einer Zeichenfolge mit einem Trennzeichen zu verbessern:
import re line='abc def ; ghi, jkl,mno, pkr' result=re.split(r'\s*(;|,|\s)\s*',line) values=result[::2] delimiters=result[1::2]+[''] print(values) print(delimiters) last=''.join(v+d for v,d in zip(values,delimiters)) print(last)
Ergebnis:
['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr'] [' ', ';', ',', ',', ',', ''] abc def;ghi,jkl,mno,pkr
Wenn Sie in den Ergebnissen keine Trennzeichen sehen, diese aber dennoch verwenden möchten Symbole für Regex-Muster. Stellen Sie beim Gruppieren sicher, dass Sie eine nicht einfangende Gruppe verwenden, angegeben in der Form (?:...). Beispiel ist wie folgt:
import re line='abc def ; ghi, jkl,mno, pkr' result=re.split(r'\s*(?:;|,|\s)\s*',line) print(result)
Ergebnis:
['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']
Das obige ist der detaillierte Inhalt vonPython teilt Zeichenfolgen für eine beliebige Anzahl von Trennzeichen auf (Code im Anhang). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!