Ich habe die meiste Zeit meines Morgens damit verschwendet, dieses einfache Problem nicht zu lösen. Mit Python, ich möchte Datendateien analysieren, die wie folgt aussehen:Wie kann ich eine Textdatei basierend auf Kommentarblöcken in Python aufteilen?
# This is an example comment line, it starts with a '#' character.
# There can be a variable number of comments between each data set.
# Comments "go with" the data set that comes after them.
# The first data set starts on the next line:
0.0 1.0
1.0 2.0
2.0 3.0
3.0 4.0
# Data sets are followed by variable amounts of white space.
# The second data set starts after this comment
5.0 6.0
6.0 7.0
# One more data set.
7.0 8.0
8.0 9.0
Das Python-Code, den ich das obige Beispiel in die drei „Blöcke“ würde analysieren wollen, sie als Elemente einer Liste speichern. Die einzelnen Code-Blöcke könnten selbst als Listen von Zeilen mit oder ohne Kommentarzeilen gespeichert werden. Ein handraulic Weg, dies zu tun:
#! /usr/bin/env python
# Read in data, seperate into rows_alldata
f=open("example")
rows = f.read().split('\n')
f.close()
# Do you haz teh codez?
datasets=[]
datasets.append(rows[0:8])
datasets.append(rows[9:13])
datasets.append(rows[15:18])
Ich bin für eine allgemeinere Lösung, die eine variable Anzahl und Längen von Datensätzen unterstützt. Ich habe mehrere Katastrophen aus nicht pythonisch anmutenden Schleifen ausprobiert. Ich denke, es ist am besten, meine Frage nicht mit ihnen zu überladen; das ist Arbeit und keine "Hausaufgaben".
wird immer ein Datensatz als String gespeichert werden? –
Die Daten sind Rohtext, aber am Ende parse ich es zu schweben. –
Weißt du was ... Wenn ich es nochmal betrachte, denke ich, dass es am einfachsten wäre, es in dem Beispiel, das ich gebe, basierend auf den Leerraumblöcken zwischen den Datensätzen zu teilen. –