[Tutor] How to parse and extract data from a log file?

John Fouhy john at fouhy.net
Wed Aug 8 01:07:48 CEST 2007


On 08/08/07, Tim Finley <gofinner at hotmail.com> wrote:
> I'm a newbie to programming and am trying to learn Python.  Maybe I'm wrong,
> but I thought a practical way of learning it would be to create a script.  I
> want to automate the gathering of mailbox statistics for users in a post
> office.  There are two lines containing this information for each user.  I
> want to find the two lines for each user and place the information in a
> different file.  I can't figure out how to find the information I'm after.
> Can you provide me an example or refer me to some place that has it?

Hi Tim,

My first step in approaching a problem like this would probably be to
parse the data.  "parsing" means taking text data and adding structure
to it.

For example, suppose I had a data file "employees.csv" that looks like this:

1,joe,smith,ceo
2,fred,dagg,cio
3,karl,marx,cfo

where the data format is: id, first name, surname, job

I might proceed like this:

#-----
employees = {}        # This is a dictionary.  I will use this to
store the parsed information.
infile = open('employees.csv')      # open the file for reading

for line in infile:      # go through the input file, one line at a time
    line = line.strip()     # remove the newline character at the end
of each line
    id, first, last, job = line.split(',')       # split up line
around comma characters
    employees[int(id)] = { 'first':first, 'last':last, 'job':job }
# store data in dictionary
#-----

Once we get to here, we can do things like this:

# What is employee 3's name?
print employees[3]['first'], employees[3]['last']

# What is employee 1's job?
print employees[1]['job']

This might not be the best data structure for you; it depends on what
your data looks like and what you want to do with it.  Python also has
lists and tuples.  I encourage you to go through the tutorial :-)

-- 
John.


More information about the Tutor mailing list