Datei einlesen und in Liste speichern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Hallo,
ich habe eine Text Datei mit mehreren Textzeilen und ich möchte ein String aus all den Zeilen erstellen. Mein Problem ist, dass es in Python nicht möglich ist Strings zu erweitern ohne einen neuen String zu erstellen.

Code: Alles auswählen

for line in open('a.txt', 'r')
    line = line.rstrip()
Die einzige Möglichkeit die ich kenne ist Listen zu verwenden. Dies hätte den Vorteil, dass ich auch die Strings manipulieren könnte.

Gibt es eine Möglichkeit eine Datei Zeichenweise einzulesen und gleich die extend-Methode von Listen für jedes Zeichen zu verwenden ? Wenn es eine Möglichkeit gibt wie würde man noch rstrip() verwenden können?

Viele Grüße
BlackJack

@mit: `rstrip()` willst Du ja auf die Zeilen anwenden, da musst Du die Datei halt auch als Zeilen aufgeteilt betrachten und nicht zeichenweise.

Die bearbeiteten Zeilen musst Du halt wieder zu einer Zeichenkette zusammensetzen, wenn Du das als Endergebnis haben möchtest.

Code: Alles auswählen

with open('a.txt', 'r') as lines:
    result = '\n'.join(s.rstrip() for s in lines)
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Danke für den Code, aber ich habe mich falsch ausgedruckt. I möchte Zeichenweise einlesen ohne '\n', d.h. ich muss nicht rstrip() verwenden.
Jedes Zeichen sollte in eine Liste angehängt werden.
BlackJack

Dann halt so:

Code: Alles auswählen

with open('a.txt', 'r') as in_file:
    result = [c for c in in_file.read() if c != '\n']
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

mit hat geschrieben:Danke für den Code, aber ich habe mich falsch ausgedruckt. I möchte Zeichenweise einlesen ohne '\n', d.h. ich muss nicht rstrip() verwenden.
Jedes Zeichen sollte in eine Liste angehängt werden.
Wieso musst du nicht? Egal, `list(open("file").read().replace("\n", ""))`.

Stefan
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Danke.
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Um wirklich nur immer ein Zeichen aus ihr einzulesen anstatt mit read() die gesamte Datei in den Speicher zu laden:

Code: Alles auswählen

from functools import partial

with open("a.txt") as fp:
    result = [c for c in iter(partial(fp.read, 1), "") if c != '\n']
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Danke.
Antworten