
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.