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".
Anfänger: file open write sort close
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 HirnJan-Peer hat geschrieben:ob die vorhergehende Zeile Ähnlichkeiten mit der aktuellen aufweist, kannst du sie dir beim Durchlaufen auch immer in eine Variable "wegspeichern".
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):
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.
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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Habs mir angeguckt - Recht hast Du.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.
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.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.
Mache erst mal mit der Jan-Peer Methode weiter. Thx.
"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.
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.
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Falscher Thread?
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei