Ho sprecato la maggior parte della mia mattinata senza riuscire a risolvere questo semplice problema. Utilizzando pitone, voglio analizzare i file di dati che assomigliano a questo:Come posso dividere un file di testo in base ai blocchi di commento in Python?
# 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
Il codice python che voglio sarebbe analizzare l'esempio sopra in tre "blocchi", la loro memorizzazione come elementi di una lista. I singoli blocchi di codice potrebbero essere memorizzati come liste di linee, con o senza le righe di commento, qualunque sia. Un modo handraulic è quello di fare questo:
#! /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])
sto cercando una soluzione più generale che supporta i numeri e le lunghezze di set di dati variabili. Ho provato diverse catastrofi costruite su anelli non pitonici. Penso sia meglio non ingombrare la mia domanda con loro; questo è lavoro e non "compiti".
Sarà un insieme di dati sempre essere memorizzati come una stringa? –
I dati sono testo non elaborato, ma alla fine li analizzerò per renderli mobili. –
Sai cosa ... Guardandolo di nuovo, penso che nell'esempio che ho dato sarebbe più facile dividerlo in base ai blocchi di spazio bianchi tra i set di dati. –