2046 Stimmen

Wie entferne ich einen nachgestellten Zeilenumbruch?

Wie entferne ich das letzte Zeichen einer Zeichenkette, wenn es ein Zeilenumbruch ist?

"abc\n"  -->  "abc"

4 Stimmen

Superset: beliebige Zeichenkette anstelle von nur newline: stackoverflow.com/questions/1038824/

9 Stimmen

Die A+-Antwort lautet, wenn dies darauf zurückzuführen ist, dass vergessen wurde open() eine Datei mit dem entsprechenden 'newline=...' Parameter für Ihre Plattform (universelle Unterstützung von Zeilenumbrüchen), müssen Sie ihn möglicherweise nicht explizit entfernen.

43voto

kiriloff Punkte 24291

Sie können verwenden line = line.rstrip('\n') . Dadurch werden alle Zeilenumbrüche am Ende der Zeichenkette entfernt, nicht nur einer.

39voto

slec Punkte 519
s = s.rstrip()

entfernt alle Zeilenumbrüche am Ende der Zeichenkette s . Die Zuweisung ist erforderlich, weil rstrip gibt eine neue Zeichenkette zurück, anstatt die ursprüngliche Zeichenkette zu ändern.

36voto

mihaicc Punkte 2834
"line 1\nline 2\r\n...".replace('\n', '').replace('\r', '')
>>> 'line 1line 2...'

oder Sie können sich auch mit Regexps austoben

0 Stimmen

Das hat mir sehr geholfen, eine Textdatei mit Zeilenenden schnell in eine einzige Textzeile zu verwandeln. Ich bin ein Neuling, also nicht sicher, ob es einen besseren Weg, es zu tun, aber es funktionierte, danke! (Strip schien nur an den Enden zu funktionieren, nicht intern)

2 Stimmen

Warum nicht einfach eine replace-Anweisung verwenden, wie .replace('\n|\r', '') ?

2 Stimmen

Nur für den Fall, dass jemand anderes die Idee von @DoorknobofSnow nutzen möchte: Es ist nur eine kleine Änderung, um das Regex-Modul zu verwenden: import re re.sub('\n|\r', '', '\nx\n\r\n') ==> 'x' .

35voto

Alien Life Form Punkte 1814

Dies würde genau das chomp von Perl (ohne das Verhalten bei Arrays) für " \n "Zeilenende:

def chomp(x):
    if x.endswith("\r\n"): return x[:-2]
    if x.endswith("\n") or x.endswith("\r"): return x[:-1]
    return x

(Hinweis: Es ändert die Zeichenkette nicht 'an Ort und Stelle'; es entfernt keine zusätzlichen Leerzeichen am Ende; es nimmt \r\n auf dem Konto)

0 Stimmen

Wie könnte es die Zeichenfolge überhaupt ändern... es sind unveränderliche Objekte.

0 Stimmen

@eric Die Zeichenfolge wird nicht geändert. Es gibt eine geänderte Kopie von x zurück. Strings an Ort und Stelle zu ändern ist eine Sache von Perl, nicht von Python.

0 Stimmen

Ich will damit sagen, dass Ihr Hinweis ist verwirrend: Durch die Angabe, dass der Code keine Zeichenketten verändert, könnten Anfänger annehmen, dass dies eine Sache in Python ist.

32voto

Hackaholic Punkte 17340

Können Sie Streifen verwenden:

line = line.strip()

Demo:

>>> "\n\n hello world \n\n".strip()
'hello world'

1 Stimmen

Ich habe diese Lösung ausprobiert, aber dabei werden führende Leerzeichen in der Zeile entfernt.

0 Stimmen

@Tarik Sie können rstrip verwenden

0 Stimmen

Rstrip löscht alle Leerzeichen am Ende, im Gegensatz zu chomp, das nur maximal einen Zeilenumbruch löscht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X