Python - parsing nested information and provide it in proper format from log file
jt11380 at gmail.com
jt11380 at gmail.com
Fri Feb 20 08:31:44 EST 2015
On Friday, February 20, 2015 at 8:11:59 AM UTC-5, Peter Otten wrote:
> Jay T wrote:
>
> > have some log file which has nested data which i want to filter and
> > provide specific for student with total counts
> >
> > Here is my log file sample:
> > Student name is ABC
> > Student age is 12
> > student was late
> > student was late
> > student was late
> > Student name is DEF
> > student age is 13
> > student was late
> > student was late
> >
> > i want to parse and show data as Student name, student age , number of
> > counts how many times student was late e:g Name Age TotalCount
> > ABC 12 3
> > DEF 13 2
> >
> > Please help me with solution that will be really grateful.
>
> What have you tried? Please show us some code.
>
> The basic idea would be to iterate over the lines and split the current line
> into words.
>
> If the second word is "name" and it's not the first iteration print the
> student's name, age, and was_late count. Then set the name variable to the
> new name and reset age and was_late to 0. To detect the first iteration you
> can set
>
> name = None
>
> before you enter the loop and then check for that value before printing:
>
> if name is not None:
> ... # print student data
>
> If the second word is "age" convert the 4th word to integer and set the age
> variable.
>
> If the second word is "was" increment the was_late counter.
>
> Remember that when the loop ends and the file was not empty you have one
> more student's data to print.
I tried to implent below code and got stucked how to do nested loop to count instead doing another logic and parsing:
import re
def GetName(input_string):
myName=input_string.split()
myName1= myName[1]
return myName1
def GetAge(input_string):
myAge=input_string.split()
myAge1= myAge[2]
return myAge1
file = open('mylogfile')
log_data = file.readlines()
print 'entered'
for eachline in log_data:
input_string = eachline
if 'name' in input_string:
sometextval = GetName(input_string)
print "name", sometextval
if 'Age' in input_string:
sometextval2 = GetAge(input_string)
print "Age", sometextval2
Now get stuck to get count for total_late time as it is part of name, age so how to write logic which counts as a part of group.
any help will be grateful.
-J
More information about the Python-list
mailing list