Forums
New posts
Search forums
Members
Current visitors
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Archive
Archive
Python
convert string number to real number - ValueError: invalid literal
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
[QUOTE="davidj411, post: 3460803"] i am parsing a cell phone bill to get a list of all numbers and the total talktime spend on each number. i already have a unique list of the phone numbers. now i must go through the list of numbers and add up the totals for each number. on the bill, each line has a few fields,one field containing the phone number, another field containing the number of minutes on that call. the bill is comma delimited. here is the function i wrote to get one number at a time's total talktime. def getsinglenumbertalktime(number,talktime): for line in file[0:-2]: if number in line: li=line.split(',') if len(li)==6 and li[5]!="Minutes" : print "talktime type: " + str(type (talktime)) #li[5]=fpformat.fix(li[5],0) print li[5] + "li[5] type: " + str(type(li[5])) newvar = int(li[5]) print (type(newvar)) print li[5] talktime = talktime + li[5] return talktime here is the output with error that i get back. talktime type: <type 'int'> "2"li[5] type: <type 'str'> Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\path\inprog\all_t_mob_nums.py", line 74, in <module> getsinglenumbertalktime('"800-218-2644"',talktime) File "c:\path\inprog\all_t_mob_nums.py", line 66, in getsinglenumbertalktime newvar = int(li[5]) ValueError: invalid literal for int() with base 10: '"2"' here is the question: How can i convert a string number like "2" to a true number that can be added. I have tried using pfformat, float(), and int() - all with no good results. this seems like is should be simple, but it just plain isn't. I actually found a good solution. basically, take each entry and add it to a list. then iterate through the list , converting each item to int(). then add them to sum them all up. FINAL SOLUTION: def getsinglenumbertalktime(number,talktime): num_of_calls=0 num_mins=[] for line in file[0:-2]: #print "LINE: " + line #print number in line if number in line: num_of_calls += 1 #print number,num_of_calls li=line.strip("\n") #print "stripped:" + line li=li.split(',') #print "split: " + str(li) #print "len of li: " + str(len(li)) + str(num_of_calls) if len(li)==7 and li[5]!="Minutes" : #print "talktime type: " + str(type (talktime)) #print li[4] + "li[4] type: " + str(type(li[5])) #newvar = fpformat.fix(li[4],0) #print (type(newvar)) #print "len 7: " + str(type(li[6])) num_mins.append(li[6]) #talktime = talktime + int(a) if len(li)==6 and li[5]!="Minutes" : #print "talktime type: " + str(type (talktime)) #print li[5] + "li[5] type: " + str(type(li[5])) #newvar = fpformat.fix(li[4],0) #print (type(newvar)) #print "len 6: " + str(type(li[5])) num_mins.append(li[5]) #talktime = talktime + int(a) #return talktime , num_of_calls x=0 #print "this" + str(number) + str(num_mins) for a in num_mins: b=int(a) x=x+b print str(number), str(x), str(type(x)) output should look like this (parts of script are not included) 555-555-5555 replaced the innocent :P): 555-555-5555 19 <type 'int'> 555-555-5555 6 <type 'int'> 555-555-5555 3 <type 'int'> 555-555-5555 3 <type 'int'> 555-555-5555 2 <type 'int'> 555-555-5555 52 <type 'int'> [/QUOTE]
Verification
Post reply
Forums
Archive
Archive
Python
convert string number to real number - ValueError: invalid literal
Top