[Python] Loswerden von \ n bei Verwendung von .readlines ()


Answers

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]
Question

Diese Frage hat hier bereits eine Antwort:

Ich habe eine TXT-Datei mit Werten darin.

Die Werte sind wie folgt aufgelistet:

Value1
Value2
Value3
Value4

Mein Ziel ist es, die Werte in eine Liste zu stellen. 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', 'r+w')
contents = t.readline()

alist = []

for i in contents:
    alist.append(i)



Verwenden .strip() für jede Zeichenfolge in Ihrer Liste .strip() , die Leerzeichen vom Anfang oder Ende der Zeichenfolge entfernt:

for i in contents:
    alist.append(i.strip())

Aber je nach Anwendungsfall ist es besser, wenn Sie etwas wie numpy.loadtxt oder numpy.genfromtxt wenn Sie ein numpy.genfromtxt Array der Daten benötigen, die Sie aus der Datei lesen.




Ich benutzte die Streifenfunktion, um Newline-Charakter loszuwerden, während geteilte Linien Speicherfehler auf 4 gb-Datei verursachten.

Beispielcode:

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



Ich hatte das gleiche Problem und fand die folgende Lösung sehr effizient. Ich hoffe, dass es dir oder allen anderen hilft, die das Gleiche tun wollen.

Zuallererst würde ich mit einer "with" -Anweisung beginnen, da sie das ordnungsgemäße Öffnen / Schließen der Datei sicherstellt.

Es sollte ungefähr so ​​aussehen:

with open("filename.txt", "r+") as f:
    contents = [x.strip() for x in f.readlines()]

Wenn Sie diese Zeichenfolgen (jedes Element in der Inhaltsliste ist eine Zeichenfolge) in Ganzzahl oder Gleitkomma konvertieren möchten, können Sie Folgendes tun:

contents = [float(contents[i]) for i in range(len(contents))]

Verwenden Sie int anstelle von float wenn Sie in Ganzzahl konvertieren möchten.

Es ist meine erste Antwort in SO, tut mir leid, wenn es nicht in der richtigen Formatierung ist.




Ich habe dies kürzlich verwendet, um alle Zeilen aus einer Datei zu lesen:

alist = open('maze.txt').read().split()

oder Sie können dies für ein bisschen zusätzliche Sicherheit verwenden:

with f as open('maze.txt'):
    alist = f.read().split()

Es funktioniert nicht mit Leerzeichen zwischen Text in einer einzelnen Zeile, aber es sieht so aus, als hätte Ihre Beispieldatei möglicherweise keine Leerzeichen, die die Werte aufteilen. Es ist eine einfache Lösung und gibt eine genaue Liste von Werten zurück und fügt keine leere Zeichenfolge hinzu: '' für jede leere Zeile, z. B. einen Zeilenumbruch am Ende der Datei.