Seite 3 von 3
Verfasst: Montag 11. Februar 2008, 22:47
von Jan-Peer
Hallo,
endlich jemand, der für Ordnung sorgt
Zur Frage:
Auf die Schnelle fallen mir zwei Möglichkeiten ein. Die erste ist, die Schleife "klassisch" mit xrange laufen zu lassen. Damit hast du die Möglichkeit, jederzeit wieder auf frühere oder spätere Zeilen zugreifen zu können. Wenn es nur darum geht, zu gucken, ob die vorhergehende Zeile Ähnlichkeiten mit der aktuellen aufweist, kannst du sie dir beim Durchlaufen auch immer in eine Variable "wegspeichern".
Verfasst: Montag 11. Februar 2008, 23:16
von Schnäik
Jan-Peer hat geschrieben:ob die vorhergehende Zeile Ähnlichkeiten mit der aktuellen aufweist, kannst du sie dir beim Durchlaufen auch immer in eine Variable "wegspeichern".
Das wäre zu spät - ich müsste gucken ob die aktuelle Zeile Ähnlichkeiten mit der nachfolgenden aufweist. Letztendlich andersrum natürlich auch machbar - aber ich habe jetzt schon Knoten im Hirn
Und um xrange zu nutzen müsste ich DATEI vorher aber komplett einlesen oder nicht? Z.B.:
Code: Alles auswählen
zeilen = open(DATEI, 'r').readlines()
for z_nummer in xrange(zeilen):
Das würde ich nur ungern machen - "Datei" ist sehr groß...
Verfasst: Montag 11. Februar 2008, 23:32
von Leonidas
Ja, aber ich sehe nicht wie dir ``fileinput`` dabei helfen würde. Der Wohl einfachste Ansatz ist der von Jan-Peer vorgeschlagene.
Oder du kannst ein bisschen Glue-Code schreiben, um aus einer Datei immer zwei Zeilen gleichzeitig auszulesen. Ist in der Benutzung dann einfacher, aber das musst du eben implementieren.
Verfasst: Montag 11. Februar 2008, 23:48
von Schnäik
Leonidas hat geschrieben:Ja, aber ich sehe nicht wie dir ``fileinput`` dabei helfen würde. Der Wohl einfachste Ansatz ist der von Jan-Peer vorgeschlagene.
Habs mir angeguckt - Recht hast Du.
Leonidas hat geschrieben:Oder du kannst ein bisschen Glue-Code schreiben, um aus einer Datei immer zwei Zeilen gleichzeitig auszulesen. Ist in der Benutzung dann einfacher, aber das musst du eben implementieren.
Das ist so naheliegend dass man wie immer nicht selbst drauf kommt

Wenn allerdings 3,4,5 etc. nacheinanderliegende Zeilen betroffen sind komme ich damit auch nicht weiter.
Mache erst mal mit der Jan-Peer Methode weiter. Thx.
Verfasst: Dienstag 12. Februar 2008, 09:48
von BlackJack
"Klassisch" ohne die gesamte Datei ein zu lesen wäre das merken der letzten Zeile.
Man könnte auch einen Iterator schreiben, der eine `peek()`-Operation erlaubt um ein Element vor zu schauen. In dem Fall ist dann der "Endfall" interessant: Was soll passieren, wenn man versucht "hinter" die letzte Zeile zu schauen?
Wenn Du den Knoten im Hirn nicht erwähnt hättest, würde ich jetzt auf `itertools.groupby()` hinweisen.
Zu den Quelltextschnippseln: `readlines()` liest die gesamte Datei in den Speicher. Man kann auch direkt über Dateiobjekte iterieren, dann wird immer nur ein interner Puffer von ein paar Kilobyte gelesen.
Verfasst: Dienstag 12. Februar 2008, 13:53
von Leonidas
Edit: In den richtigen Thread
umgezogen.
Verfasst: Dienstag 12. Februar 2008, 15:20
von Rebecca
Falscher Thread?
Verfasst: Dienstag 12. Februar 2008, 15:25
von Leonidas
Rebecca hat geschrieben:Falscher Thread?
Indeed. Ist nun ausgebessert, danke.
