Skip to content

Aufteilen von Zeichenketten in Python (Begrenzer, Zeilenumbruch, Regex, etc.)

Python

Dieser Artikel genau, wie SIE Buchstaben nach Trennzeichen, Zeilenumbrüchen, regelmäßigen Ausdrücken und der Anzahl der Zeichen in Python aufteilen.

  • Durch Trennzeichen trennen:split()
    • Geben Sie das Trennzeichen an:sep
    • Geben Sie die maximale Anzahl von Splits an:maxsplit
  • Durch Trennzeichen von rechts getrennt:rsplit()
  • Trennung durch Zeilenumbruch:splitlines()
  • Nach Regex aufgeteilt:re.split()
    • Geteilt durch mehrere verschiedene Trennzeichen


  • Verketten Sie eine Liste von Zeichenfolgen
  • Split basierend auf der Anzahl der Zeichen: Slice

Weitere Informationen zum Verketten und Extrahieren von Zeichenfolgen finden Sie im following Artikel.

Durch Trennzeichen trennen:split()

Verwenden Sie die Methode split(), um nach Trennzeichen zu teilen.

Wenn das Argument weggelassen WIRD, WIRD es durch Leerzeichen wie Leerzeichen, Zeilenumbrüche n und Tabulatoren t geteilt. Auf nebeneinander liegende Leerzeichen werden zusammen verarbeitet.

Eine Liste der Wörter wird zurückgegeben.

s_blank = 'one two     threenfourtfive'
print(s_blank)
# one two     three
# four  five

print(s_blank.split())
# ['one', 'two', 'three', 'four', 'five']

print(type(s_blank.split()))
# <class 'list'>

Verwenden Sie join(), wie unten beschrieben, um eine Liste zu einem String zu verketten.

Geben Sie das Trennzeichen an:sep

Geben Sie ein Trennzeichen für den ersten Parameter sep an.

s_comma = 'one,two,three,four,five'

print(s_comma.split(','))
# ['one', 'two', 'three', 'four', 'five']

print(s_comma.split('three'))
# ['one,two,', ',four,five']

Wenn SIE mehrere Trennzeichen angeben möchten, verwenden SIE reguläre Ausdrücke wie später beschrieben.

Geben Sie die maximale Anzahl von Splits an:maxsplit

Geben Sie für den zweiten Parameter maxsplit die maximale Anzahl an Splits an.

Wenn maxsplit angegeben ist, werden höchstes maxsplit-Splits durchgeführt.

print(s_comma.split(',', 2))
# ['one', 'two', 'three,four,five']

So ist es sinnvoll, die erste Zeile eines Strings zu löschen.

If sep=’n‘, maxsplit=1 ist, can SIE Eine Liste von Strings erhalten, sterben durch das erste Zeilenumbruchzeichen n geteilt WIRD. Das zweite Element [1] dieser Liste ist eine Zeichenfolge ohne die erste Zeile. Da es das letzte Element ist, kann es als [-1] angegeben werden.

s_lines = 'onentwonthreenfour'
print(s_lines)
# one
# two
# three
# four

print(s_lines.split('n', 1))
# ['one', 'twonthreenfour']

print(s_lines.split('n', 1)[0])
# one

print(s_lines.split('n', 1)[1])
# two
# three
# four

print(s_lines.split('n', 1)[-1])
# two
# three
# four

Ebenso, um die ersten beiden Zeilen zu löschen:

print(s_lines.split('n', 2)[-1])
# three
# four

Durch Trennzeichen von rechts getrennt:rsplit()

rsplit() teilt von der rechten Seite des Strings.

Das Ergebnis unterscheidet sich nur dann von split(), wenn der zweite Parameter maxsplit angegeben ist.

Wenn SIE die letzte Zeile löschen möchten, verwenden SIE auf dieselbe Weise wie split() rsplit().

print(s_lines.rsplit('n', 1))
# ['onentwonthree', 'four']

print(s_lines.rsplit('n', 1)[0])
# one
# two
# three

print(s_lines.rsplit('n', 1)[1])
# four

So löschen Sie die letzten beiden Zeilen:

print(s_lines.rsplit('n', 2)[0])
# one
# two

Trennung durch Zeilenumbruch:splitlines()

Es gibt auch ein splitlines() zum Teilen nach Liniengrenzen.

Wie in den vorherigen Beispielen werden split() und rsplit() standardmäßig mit Leerzeichen einschließlich Zeilenumbruch getrennt, und SIE können den Zeilenumbruch auch mit dem Parameter sep angeben.

Es ist jedoch oft besser, splitlines() zu verwenden.

Zum Beispiel eine geteilte Zeichenfolge, die n (LF, verwendet in Unix-Betriebssystemen einschließlich Mac) und rn (CR + LF, verwendet in Windows-Betriebssystemen) enthält.

s_lines_multi = '1 onen2 tworn3 threen'
print(s_lines_multi)
# 1 one
# 2 two
# 3 three

Wenn split() angewendet wird, wird standardmäßig nicht nur durch Zeilenumbrüche, sondern auch durch Leerzeichen geteilt.

print(s_lines_multi.split())
# ['1', 'one', '2', 'two', '3', 'three']

Da im September nur ein Newline-Zeichen angegeben werden kann, kann es bei gemischten Newline-Zeichen nicht geteilt werden. Es wird auch am Ende des Newline-Zeichens geteilt.

print(s_lines_multi.split('n'))
# ['1 one', '2 twor', '3 three', '']

splitlines() teilt ein anderes Newline-Zeichen, aber nicht ein anderes Leerzeichen.

print(s_lines_multi.splitlines())
# ['1 one', '2 two', '3 three']

If das erste Argument, keepends, auf True gesetzt IST, enthält das Ergebnis ein Zeilenumbruchzeichen am Ende der Zeile.

print(s_lines_multi.splitlines(True))
# ['1 onen', '2 tworn', '3 threen']

Weitere Operationen mit Zeilenumbrüchen finden Sie im following Artikel.

Nach Regex aufgeteilt:re.split()

split() und rsplit() werden nur geteilt, wenn sep vollständig erreicht.

Wenn SIE Eine Zeichenfolge aufteilen möchten, sterben Sie mit Einem regulären Ausdruck (Regex) statt mit Einer Perfekten Übereinstimmung, verwenden SIE split() des re-Moduls.

Geben Sie in re.split() im ersten Parameter das Regex-Muster und im zweiten Parameter die Zielzeichenfolge an.

Ein Beispiel für die Aufteilung nach fortlaufenden Nummern ist wie folgt.

import re

s_nums = 'one1two22three333four'

print(re.split('d+', s_nums))
# ['one', 'two', 'three', 'four']

Die maximale Anzahl der Splits kann im dritten Parameter maxsplit angegeben werden.

print(re.split('d+', s_nums, 2))
# ['one', 'two', 'three333four']

Geteilt durch mehrere verschiedene Trennzeichen

Die following zwei sind nützlich, um sich daran zu erinnern, selbst wenn Sie mit der Regex nicht vertraut sind.

Schließen Sie eine Zeichenfolge mit [] ein, um mit einem beliebigen einzelnen Zeichen darin übereinzustimmen. Sie können eine Zeichenfolge durch mehrere verschiedene Zeichen aufteilen.

s_marks = 'one-two+three#four'

print(re.split('[-+#]', s_marks))
# ['one', 'two', 'three', 'four']

Wenn Muster durch | getrennt sind, stimmt es mit jedem Muster überein. Natürlich ist es möglich, Sonderzeichen von Regex für jedes Muster zu verwenden, aber es ist in Ordnung, auch wenn ein normaler String so angegeben wird, wie er ist. Sie können durch mehrere Buchstaben aufteilen.

s_strs = 'oneXXXtwoYYYthreeZZZfour'

print(re.split('XXX|YYY|ZZZ', s_strs))
# ['one', 'two', 'three', 'four']

Verketten Sie eine Liste von Zeichenfolgen

In den vorangegangenen Beispielen können Sie die Zeichenfolge aufteilen und die Liste erhalten.

Wenn Sie eine Liste von Strings zu einem String verketten möchten, verwenden Sie die String-Methode join().

Rufen Sie join() von ’separator‘ aus auf und SIE übergeben eine Liste von Zeichenfolgen, die an das Argument verkettet werden sollen.

l = ['one', 'two', 'three']

print(','.join(l))
# one,two,three

print('n'.join(l))
# one
# two
# three

print(''.join(l))
# onetwothree

Im following Artikel FINDEN SIE SICHERHEITS-PCIONE ZUR STICKPLATTENVERKETTUNG.

Split basierend auf der Anzahl der Zeichen: Slice

Verwenden Sie Slice, um Buchstaben basierend auf der Anzahl der Zeichen aufzuteilen.

s = 'abcdefghij'

print(s[:5])
# abcde

print(s[5:])
# fghij

Es kann als Tupel bezogen bzw. einer Variablen zugewiesen werden.

s_tuple = s[:5], s[5:]

print(s_tuple)
# ('abcde', 'fghij')

print(type(s_tuple))
# <class 'tuple'>

s_first, s_last = s[:5], s[5:]

print(s_first)
# abcde

print(s_last)
# fghij

Aufgeteilt in drei:

s_first, s_second, s_last = s[:3], s[3:6], s[6:]

print(s_first)
# abc

print(s_second)
# def

print(s_last)
# ghij

Die Anzahl der Zeichen kann mit der eingebauten Funktion len() ermittelt werden. Es kann damit auch in zwei Hälften geteilt werden.

half = len(s) // 2
print(half)
# 5

s_first, s_last = s[:half], s[half:]

print(s_first)
# abcde

print(s_last)
# fghij

Wenn Sie Zeichenfolgen verketten möchten, verwenden Sie den Operator +.

print(s_first + s_last)
# abcdefghij