Python: Parsing a colon delimited file with various counts of fields

Posted by Mark on Stack Overflow See other posts from Stack Overflow or by Mark
Published on 2011-01-28T23:14:49Z Indexed on 2011/01/28 23:26 UTC
Read the original article Hit count: 145

Filed under:
|
|
|

I'm trying to parse a a few files with the following format in 'clientname'.txt

hostname:comp1
time: Fri Jan 28 20:00:02 GMT 2011
ip:xxx.xxx.xx.xx
fs:good:45
memory:bad:78
swap:good:34
Mail:good

Each section is delimited by a : but where lines 0,2,6 have 2 fields... lines 1,3-5 have 3 or more fields. (A big issue I've had trouble with is the time: line, since 20:00:02 is really a time and not 3 separate fields.

I have several files like this that I need to parse. There are many more lines in some of these files with multiple fields.

...
for i in clients:
if os.path.isfile(rpt_path + i + rpt_ext):          # if the rpt exists then do this
    rpt = rpt_path + i + rpt_ext
    l_count = 0
    for line in open(rpt, "r"):
        s_line = line.rstrip()
        part = s_line.split(':')
        print part
        l_count = l_count + 1
else:                                               # else break
    break

First I'm checking if the file exists first, if it does then open the file and parse it (eventually) As of now I'm just printing the output (print part) to make sure it's parsing right. Honestly, the only trouble I'm having at this point is the time: field. How can I treat that line specifically different than all the others? The time field is ALWAYS the 2nd line in all of my report files.

© Stack Overflow or respective owner

Related posts about python

Related posts about parsing