Probleme mit csv-Modul

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
htw7448
User
Beiträge: 51
Registriert: Montag 16. April 2007, 10:59
Wohnort: Messel(Hessen)
Kontaktdaten:

Dienstag 8. Januar 2008, 11:00

Aufgrund der unzureichenden Dokumentation bzgl. des csv-Moduls auf python.org hänge ich wiedermal fest. Ich möchte ganz gerne in einer csv-Datei nach einer Stelle (set Zahl) suchen und den darauffolgenden mehrzeiligen Block extrahieren.

die Struktur der Datei ist dabei:

set
60
1 2 4
2 4 6
5 6 7
set
61
5 1 3
4 2 5
7 9 7
set
62
..
usw.

wie kann ich nach einer 2 zeiligen Stelle suchen z.B.: set 61 und mir den anschliessenden Block in eine Liste eintragen?

Die Struktur für den Block kann man sicher über die map() Fkt. bekommen, aber wie findet man zunächst die richtige Stelle?

MfG
BlackJack

Dienstag 8. Januar 2008, 11:39

Ohne `csv`-Modul, weil mir die Beispieldaten dafür zu einfach aussehen:

Code: Alles auswählen

from itertools import dropwhile, takewhile


def iter_sets(lines):
    lines = (line.strip() for line in lines)
    first = lines.next()
    assert first == 'set'
    while True:
        yield (int(lines.next()),
               [map(int, line.split())
                for line in takewhile(lambda x: x != 'set', lines)])


def main():
    lines = open('test.txt')
    print dropwhile(lambda s: s[0] != 61, iter_sets(lines)).next()
    lines.close()
htw7448
User
Beiträge: 51
Registriert: Montag 16. April 2007, 10:59
Wohnort: Messel(Hessen)
Kontaktdaten:

Dienstag 8. Januar 2008, 17:36

vielen Dank BlackJack dein Post ist wiedermal eine Bereicherung. Ich werde mit dropwhile und co. gleich mal anschauen.

MfG
Antworten