Heim  >  Artikel  >  Backend-Entwicklung  >  Python teilt Zeichenfolgen für eine beliebige Anzahl von Trennzeichen auf (Code im Anhang)

Python teilt Zeichenfolgen für eine beliebige Anzahl von Trennzeichen auf (Code im Anhang)

不言
不言nach vorne
2018-11-27 15:50:153145Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen