Seite 1 von 1

Datei einlesen und in Liste speichern

Verfasst: Samstag 19. September 2009, 07:26
von mit
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

Verfasst: Samstag 19. September 2009, 08:35
von 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)

Verfasst: Samstag 19. September 2009, 09:51
von mit
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.

Verfasst: Samstag 19. September 2009, 10:45
von 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']

Verfasst: Samstag 19. September 2009, 11:27
von sma
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

Verfasst: Dienstag 29. September 2009, 11:45
von mit
Danke.

Verfasst: Dienstag 29. September 2009, 15:53
von str1442
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']

Verfasst: Mittwoch 30. September 2009, 12:42
von mit
Danke.