Thank you for the fast reply
Am 13.10.2005 um 19:43 schrieb Kent Johnson:
> if len(filter(re_name.search, line)) > 0:
> could be written
> if re_name.search(line):
this is not working because I am parsing a line in a list (i think):
Traceback (most recent call last):
File "telekom2.py", line 42, in ?
if re_month.search(line):
TypeError: expected string or buffer
> or even, since the re is just fixed text,
> if phone[name] in line:
this won't match anything, the number is only a part of a string...
I read the file in with
read_file = csv.reader(open(sys.argv[1], 'r'), delimiter="\t")
The input file is something like this (6 lines)
"Sonstige Leistungen des Konzerns Deutsche Telekom" "Inkasso"
"T-Online
International AG" "Ohne Anschluss" "---" "---" "T-Online dsl
flat max
Monatliche Grundgebühr" "19112" "---" "25,8100" "25,81" "16"
"Monatliche Beträge vom 01.09.2005 bis 30.09.2005" "ISDN" "Deutsche
Telekom AG" "Rufnummer" "1234561" "---" "T-ISDN xxl sunday
(monatlicherGrundpreis)" "19487" "---" "26,9600" "26,96" "16"
"Monatliche Beträge vom 01.09.2005 bis 30.09.2005" "T-DSL" "Deutsche
Telekom AG" "Rufnummer" "1234561" "---" "Monatlicher Grundpreis
FastPath für T-DSL" "63215" "---" "0,8500" "0,85" "16"
"Verbindungen Deutsche Telekom vom 17.08.2005 bis
17.08.2005" "ISDN" "Deutsche Telekom
AG" "Rufnummer" "012341234561" "2" "Verbindungen zum
Service 0190x" "03288" "21" "0,0533" "1,12" "16"
"Verbindungen Deutsche Telekom vom 17.08.2005 bis
14.09.2005" "ISDN" "Deutsche Telekom
AG" "Rufnummer" "012341234561" "23" "Verbindungen zu T-Mobile
AktivPlus xxl sunday" "19483" "190" "0,1719" "32,66" "16"
"Verbindungen Deutsche Telekom vom 17.08.2005 bis
14.09.2005" "ISDN" "Deutsche Telekom
AG" "Rufnummer" "012341234561" "2" "Deutschlandverb. AktivPlus
xxlsunday Mo-Fr Hauptzeit" "19477" "11" "0,0396" "0,44" "16"
>
>>
>> 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 ]
hm, it doesn't match:
>>> import csv
>>> rechnung=list(csv.reader(open('2005_08_Rechnung.dat', 'r'),
delimiter="\t"))
>>> [ i for i, line in enumerate(rechnung) if "Monatliche" in line ]
[]
This matches all lines, not only the ones which have "Moantliche":
>>> [ i for i, line in enumerate(rechnung) if re_month.search in line ]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40]
>
> 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 - [email protected]
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>
>
> _______________________________________________
> Tutor maillist - [email protected]
> http://mail.python.org/mailman/listinfo/tutor
>
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor