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
Probleme mit csv-Modul
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()