Parsing of a file

Paul McGuire ptmcg at austin.rr.com
Wed Aug 6 19:24:03 EDT 2008


On Aug 6, 3:14 pm, "Shawn Milochik" <Sh... at Milochik.com> wrote:
> Regular expressions will do the trick nicely.
>

Or just use str.split, and create dicts using dict(list_of_tuples)
constructor.

This code creates a single dict for the input lines, keyed by id.
Each value contains elements labeled 'id', 'ra', and 'mjd'.

-- Paul


data = """\
Field f29227: Ra=20:23:46.54 Dec=+67:30:00.0 MJD=53370.06797690
Frames   5 Set 1
Field f31448: Ra=20:24:58.13 Dec=+79:39:43.9 MJD=53370.06811620
Frames   5 Set 2
Field f31226: Ra=20:24:45.50 Dec=+78:26:45.2 MJD=53370.06823860
Frames   5 Set 3
Field f31004: Ra=20:25:05.28 Dec=+77:13:46.9 MJD=53370.06836020
Frames   5 Set 4
Field f30782: Ra=20:25:51.94 Dec=+76:00:48.6 MJD=53370.06848210
Frames   5 Set 5
Field f30560: Ra=20:27:01.82 Dec=+74:47:50.3 MJD=53370.06860400
Frames   5 Set 6
Field f30338: Ra=20:28:32.35 Dec=+73:34:52.0 MJD=53370.06872620
Frames   5 Set 7
Field f30116: Ra=20:30:21.70 Dec=+72:21:53.6 MJD=53370.06884890
Frames   5 Set 8
Field f29894: Ra=20:32:28.54 Dec=+71:08:55.0 MJD=53370.06897070
Frames   5 Set 9
Field f29672: Ra=20:34:51.89 Dec=+69:55:56.6 MJD=53370.06909350
Frames    Set 10 """.splitlines()

d = dict(
            (rec.split()[1][:-1],
             dict([('id',rec.split()[1][:-1])] +
                  [map(str.lower,f.split('='))
                      for f in rec.split()[2:5]] ) )
             for rec in data
        )
print d.keys()

for id in d.keys():
    print d[id].items()



More information about the Python-list mailing list