383 Stimmen

Getting rid of \n when using .readlines()

Ich habe eine .txt-Datei mit Werten darin.

Die Werte sind wie folgt aufgeführt:

Value1
Value2
Value3
Value4

Mein Ziel ist es, die Werte in eine Liste zu setzen. Wenn ich das tue, sieht die Liste so aus:

['Value1\n', 'Value2\n', ...]

Das \n wird nicht benötigt.

Hier ist mein Code:

t = open('filename.txt')
contents = t.readlines()

530voto

user3131651 Punkte 5465

Dies sollte das tun, was Sie möchten (Dateiinhalte in einer Liste, zeilenweise, ohne \n)

with open(filename) as f:
    mylist = f.read().splitlines()

152voto

hughdbrown Punkte 45214

Ich würde das tun:

alist = [line.rstrip() for line in open('filename.txt')]

oder:

with open('filename.txt') as f:
    alist = [line.rstrip() for line in f]

141voto

Martijn Pieters Punkte 953257

Sie können .rstrip('\n') verwenden, um nur Zeilenumbrüche am Ende des Strings zu entfernen:

for i in contents:
    alist.append(i.rstrip('\n'))

Dabei bleibt jeglicher anderer Leerraum erhalten. Wenn Sie sich nicht um Leerraum am Anfang und Ende Ihrer Zeilen kümmern, dann heißt der große schwere Hammer .strip().

Da Sie jedoch aus einer Datei lesen und ohnehin alles in den Speicher laden, ist es besser, die str.splitlines()-Methode zu verwenden; diese teilt einen String an Zeilentrennern auf und gibt eine Liste von Zeilen ohne diese Trenner zurück; verwenden Sie dies für das Ergebnis von file.read() und verwenden Sie überhaupt nicht file.readlines():

alist = t.read().splitlines()

27voto

Lisle Punkte 1620

Nachdem Sie die Datei geöffnet haben, kann die Listenabstraktion dies in einer Zeile erledigen:

fh=open('dateiname')
newlist = [zeile.rstrip() for zeile in fh.readlines()]
fh.close()

Vergessen Sie einfach nicht, Ihre Datei danach zu schließen.

16voto

Yogamurthy Punkte 976

Ich habe die strip-Funktion verwendet, um das Zeilenumbruchzeichen loszuwerden, da split lines Speicherfehler bei einer 4-GB-Datei verursachte.

Beispielcode:

with open('C:\\aapl.csv','r') as apple:
    for apps in apple.readlines():
        print(apps.strip())

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