Skip to content

Umgang mit Zeilenumbrüchen (Newlines) in Python

Python

Dieser Artikel genau, wie man in Python mit Strings einschließlich Zeilenumbrüchen (Zeilenvorschübe, neue Zeilen) umgeht.

  • Erstellen Sie eine Zeichenfolge mit Zeilenumbrüchen
    • Newline-Code n(LF), rn(CR + LF)
    • Dreifaches Anführungszeichen “‘ oder „““
    • Mit Einzug
  • Verketten Sie eine Liste von Zeichenfolgen in neuen Zeilen
  • Teilen Sie eine Zeichenfolge durch Zeilenumbrüche in einer Liste auf:splitlines()
  • Entfernen oder ersetzen Sie Zeilenumbrüche
  • Ausgabe mit print() ohne abschließenden Zeilenumbruch

Erstellen Sie eine Zeichenfolge mit Zeilenumbrüchen

Newline-Code n(LF), rn(CR + LF)

Das Einfügen eines Zeilenumbruchcodes n, rn in einen String führt zu einem Zeilenumbruch an dieser Stelle.

s = 'Line1nLine2nLine3'
print(s)
# Line1
# Line2
# Line3

s = 'Line1rnLine2rnLine3'
print(s)
# Line1
# Line2
# Line3

Unter Unix, einschließlich Mac, wird häufig n (LF) verwendet, und unter Windows wird häufig rn (CR + LF) als Zeilenumbruchcode verwendet. Bei einigen Texteditoren können Sie einen Zeilenumbruchcode auswählen.

Dreifaches Führungszeichen “‘, „““

Sie können einen String einschließlich Zeilenumbrüchen mit dreifachen Anführungszeichen “‘ oder „““ schreiben.

s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3

Mit Einzug

Wenn SIE wie unten gezeigt dreifache Anführungszeichen und Einzüge verwenden, werden unnötige Leerzeichen eingefügt.

s = '''
    Line1
    Line2
    Line3
    '''
print(s)
# 
#     Line1
#     Line2
#     Line3
#     

Indem Sie jede Zeile in “ oder „“ einschließen, am Ende einen Zeilenumbruch n hinzufügen und einen Backslash verwenden, können Sie wie folgt schreiben:

s = 'Line1n'
    'Line2n'
    'Line3'
print(s)
# Line1
# Line2
# Line3

Es used Einen Mechanismus, bei dem aufeinanderfolgende Zeichenfolgenliterale verkettet Werden. Nichts finden Sie im folgenden Artikel.

Wenn Sie der Zeichenfolge Einzüge hinzufügen möchten, fügen Sie der Zeichenfolge in jeder Zeile ein Leerzeichen hinzu.

s = 'Line1n'
    '    Line2n'
    '        Line3'
print(s)
# Line1
#     Line2
#         Line3

Da Sie Zeilen in Klammern () frei umbrechen können, können Sie auch ohne Backslashes mit Klammern () wie folgt schreiben.

s = ('Line1n'
     'Line2n'
     'Line3')
print(s)
# Line1
# Line2
# Line3

s = ('Line1n'
     '    Line2n'
     '        Line3')
print(s)
# Line1
#     Line2
#         Line3

Wenn Sie nur den Anfang einer Zeile ausrichten möchten, können Sie der ersten Zeile mit dreifachen Anführungszeichen einen umgekehrten Schrägstrich hinzufügen.

s = '''
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3

s = '''
Line1
    Line2
        Line3'''
print(s)
# Line1
#     Line2
#         Line3

Verketten Sie eine Liste von Zeichenfolgen in neuen Zeilen

Sie können eine Liste von Strings mit der String-Methode join() zu einem einzigen String verketten.

Durch den Aufruf von join() aus einem Newline-Code n oder rn wird jedes Element in neuen Zeilen verkettet.

l = ['Line1', 'Line2', 'Line3']

s_n = 'n'.join(l)
print(s_n)
# Line1
# Line2
# Line3

print(repr(s_n))
# 'Line1nLine2nLine3'

s_rn = 'rn'.join(l)
print(s_rn)
# Line1
# Line2
# Line3

print(repr(s_rn))
# 'Line1rnLine2rnLine3'

Wie im Beispiel Beispiel can SIE den String mit intakten Newline-Codes mit der eingebauten Funktion repr() überprüfen.

Teilen Sie eine Zeichenfolge durch Zeilenumbrüche in einer Liste auf:splitlines()

Mit der String-Methode splitlines() können Sie einen String durch Zeilenumbrüche in eine Liste aufteilen.

s = 'Line1nLine2rnLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']

Es wird neben n und rn auch durch v (Zeilentabellierung) oder f (Seitenvorschub) etc.

Weitere Informationen zu splitlines() finden Sie auch im following Artikel.

Entfernen oder ersetzen Sie Zeilenumbrüche

Mit splitlines() und join() können Sie Newline-Codes aus einem String entfernen oder durch einen anderen String ersetzen.

s = 'Line1nLine2rnLine3'

print(''.join(s.splitlines()))
# Line1Line2Line3

print(' '.join(s.splitlines()))
# Line1 Line2 Line3

print(','.join(s.splitlines()))
# Line1,Line2,Line3

Es ist auch möglich, den Newline-Code sofort zu ändern. Auch wenn der Newline-Code gemischt oder unbekannt ist, can SIE ihn mit splitlines() aufteilen und dann mit dem gewünschten Code verketten.

s_n = 'n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3

print(repr(s_n))
# 'Line1nLine2nLine3'

Da splitlines() wie oben erwähnt sowohl n (LF) als auch rn (CR + LF) aufteilt, müssen Sie sich keine Gedanken darüber machen, welcher Zeilenumbruchcode im String verwendet wird.

Sie können auch den Zeilenumbruchcode replace() ersetzen.

s = 'Line1nLine2nLine3'

print(s.replace('n', ''))
# Line1Line2Line3

print(s.replace('n', ','))
# Line1,Line2,Line3

Beachten Sie jedoch, dass es nicht funktioniert, wenn es einen anderen Zeilenumbruchcode als erwartet enthält.

s = 'Line1nLine2rnLine3'

s_error = s.replace('n', ',')
print(s_error)
# ,Line3Line2

print(repr(s_error))
# 'Line1,Line2r,Line3'

s_error = s.replace('rn', ',')
print(s_error)
# Line1
# Line2,Line3

print(repr(s_error))
# 'Line1nLine2,Line3'

Sie können replace() wiederholen enthält, um mehrere Newline-Codes zu ersetzen, aber da rn n, funktioniert es nicht gut, wenn Sie es in der falschen Reihenfolge tun. Wie oben erwähnt, ist die Verwendung von splitlines() und join() sicher, da SIE sich keine Gedanken über Zeilenvorschubcodes machen müssen.

s = 'Line1nLine2rnLine3'

print(s.replace('rn', ',').replace('n', ','))
# Line1,Line2,Line3

s_error = s.replace('n', ',').replace('rn', ',')
print(s_error)
# ,Line3Line2

print(repr(s_error))
# 'Line1,Line2r,Line3'

print(','.join(s.splitlines()))
# Line1,Line2,Line3

Sie können rstrip() verwenden, um den genauen Zeilenumbruchcode zu entfernen.

s = 'aaan'
print(s + 'bbb')
# aaa
# bbb

print(s.rstrip() + 'bbb')
# aaabbb

Ausgabe mit print() ohne abschließenden Zeilenumbruch

Standardmäßig fügt print() am Ende einen Zeilenumbruch hinzu. Wenn Sie auch print() kontinuierlich ausführen, wird jedes Ausgabeergebnis mit einem Zeilenumbruch angezeigt.

print('a')
print('b')
print('c')
# a
# b
# c

Dies liegt daran, dass der Standardwert des Arguments Ende von print(), das die Zeichenkette angibt, die am Ende hinzugefügt werden sollen, ’n‘ ist.

Wenn am Ende die leere Zeichenkette “ angegeben ist, erfolgt am Ende kein Zeilenumbruch.

print('a', end='')
print('b', end='')
print('c', end='')
# abc

Am Ende kann eine beliebige Zeichenfolge angegeben werden.

print('a', end='-')
print('b', end='-')
print('c')
# a-b-c

Wenn Sie jedoch die Zeichenfolgen verketten und ausgeben möchten, ist es einfacher, die ursprünglichen Zeichenfolgen zu verketten. Siehe folgenden Artikel.