Markus Rosenstihl wrote:
> Hi,
> I wrote a program (see below) to analyse my phone bill, which is shared 
> by three others and I don't  know if there is a way to make lines like 
> this nicer:
> if len(filter(re_name.search, line)) > 0 and len(filter(re_misc.search, 
> line)) == 0

  if len(filter(re_name.search, line)) > 0:
could be written
  if re_name.search(line):
or even, since the re is just fixed text,
  if phone[name] in line:

> 
> Is there for example a way to search the whole list and give back all 
> the line numbers containing a string?
  [ i for i, line in enumerate(rechnung) if "Monatliche" in line ]

Kent
> 
> Regards,
> Markus
> 
> 
> 
> phone={ "Markus":"1234561",\
>       "Eckhard":"1234562",\
>       "Robert":"1234563",\
>       "Lei":"1234564"
>               }
> 
> 
> 
> for name in phone.keys():     # loop through the list for all names
>       euro=0 # set at each run to 0
>       i=0 # Line number
> 
>       # compile REs
>       re_name = re.compile(phone[name])
>       re_month=re.compile("Monatliche")
>       re_misc=re.compile("Sonstige")
>       
>       for line in rechnung:
>               if len(filter(re_month.search, line)) == 0:     # skip the 
> monthly 
> costs
> #             if "Monatliche" in line:
>                       if len(filter(re_name.search, line)) > 0 and 
> len(filter(re_misc.search, line)) == 0:
> #                     if phone[name] in line:
>                               euro += float(rechnung[i][10].replace( ',' , 
> '.'))
>                       if len(filter(re_misc.search, line)) > 0:       # misc 
> services
>                               if i not in misc_list: # add misc fees only once
>                                       misc_list.append(i)
>                                       misc += float(rechnung[i][10].replace( 
> ',' , '.'))
>               elif len(filter(re_month.search, line)) > 0:
>                       if i not in monthly_list: # add monthly occuring fees 
> only once
>                               monthly_list.append(i)
>                               monthly += float(rechnung[i][10].replace( ',' , 
> '.')) # replace 
> commata with dots then add to the sum
>               i=i+1           
>       per_user = ( euro + ( monthly + misc )/ divider )*1.16
>       total += per_user
>       print name,": ", per_user
> 
> 
> 
> --
> If everything seems to be going well,
> you  obviously don't know what the hell is going on
> 
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> http://mail.python.org/mailman/listinfo/tutor
> 
> 

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to