Index: sodar/trunk/sodar/data.py =================================================================== --- sodar/trunk/sodar/data.py (revision 62) +++ sodar/trunk/sodar/data.py (revision 63) @@ -75,23 +75,9 @@ def __init__(self,header): super(Header,self).__init__() - headerLines = [headerLine.strip() - for headerLine in header.split('\n') - if headerLine] - # every other line contains parameter names; + headerLines = header.split('\n') + # every other line contains parameter keys; # every other line contains parameter values - parametersPairs = [(headerLine, - headerLines[headerLines.index(headerLine)+1]) - for headerLine in headerLines[::2]] - for parameterNames,parameterValues in parametersPairs: - # parameter names must be valid Python identifiers - # for named groups matching - parameterNames = [parameterName.strip('#') - for parameterName in parameterNames.split()] - parameterPattern = re.compile(r'(?P<' + - '>\S+)\s+(?P<'.join(parameterNames) + - '>.*$)') - self.update(parameterPattern. - match(parameterValues). - groupdict()) + self.update(dict(zip(" ".join(headerLines[::2]).split(), + " ".join(headerLines[1::2]).split()))) class Body(list): @@ -102,13 +88,7 @@ def __init__(self,body): super(Body,self).__init__() - bodyLines = [bodyLine.strip() - for bodyLine in body.split('\n') - if bodyLine] - parameterNames = [parameterName - for parameterName in bodyLines[0].split()] - parameterPattern = re.compile(r'(?P<' + - '>\S+)\s+(?P<'.join(parameterNames) + - '>.*$)') - self.extend([parameterPattern.match(bodyLine).groupdict() + bodyLines = body.split('\n') + bodyKeys = bodyLines[0].split() + self.extend([dict(zip(bodyKeys, bodyLine.split())) for bodyLine in bodyLines[1:]]) self.reverse() @@ -140,5 +120,5 @@ print "Failure to read test data" data = Data(data) - print ' --- Sample ---\n'.join(data.samples) + print data['2007-06-01-09-15']['70']['SPEED'] if __name__ == "__main__":