[Tutor] Clean up loop and search in a list
Kent Johnson
kent37 at tds.net
Thu Oct 13 19:43:49 CEST 2005
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 at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>
More information about the Tutor
mailing list