2009/11/12 ankita dutta <ankita.dutt...@gmail.com>: > hi all, > > i have a file of 3x3 matrix of decimal numbers(tab separated). like this : > > 0.02 0.38 0.01 > 0.04 0.32 0.00 > 0.03 0.40 0.02 > > now i want to read 1 row and get the sum of a particular row. but when i am > trying with the following code, i am getting errors : > > code: > " > ln1=open("A.txt","r+") # file "A.txt" contains my matrix > lines1=ln1.readlines() > n_1=[ ] > > for p1 in range (0,len(lines1)): > f1=lines1[p1] > n_1.append((f1) ) > print n_1 > print sum(n_1[0]) > > " > > output: > > ['0.0200\t0.3877\t0.0011\n', '0.0040\t0.3292\t0.0001\n', > '0.0355\t0.4098\t0.0028\n', '0.0035\t0.3063\t0.0001\n', > '0.0080\t0.3397\t0.0002\n'] > > Traceback (most recent call last): > File "A_1.py", line 20, in <module> > print sum(nodes_1[0]) > File "/usr/lib/python2.5/site-packages/numpy/core/fromnumeric.py", line > 993, in sum > return _wrapit(a, 'sum', axis, dtype, out) > File "/usr/lib/python2.5/site-packages/numpy/core/fromnumeric.py", line > 37, in _wrapit > result = getattr(asarray(obj),method)(*args, **kwds) > TypeError: cannot perform reduce with flexible type > > > what I think: > > as the list is in form of '0.0200\t0.3877\t0.0011\n' , n_1[0] takes > it as a whole string which includes "\t" , i think thats why they are > giving error. > > now how can i read only required numbers from this line > '0.0200\t0.3877\t0.0011\n' and find their sum ? > can you kindly help me out how to properly code thing . >
Yes you have it right. Split the string at spaces and convert the numeric parts to floats before summing. Something along these lines :- 1 ln1=open("A.txt","r+") # file "A.txt" contains my matrix 2 lines1=ln1.readlines() 3 n_1=[ ] 4 5 for p1 in range (0,len(lines1)): 6 f1=lines1[p1] 7 n_1.append((f1) ) 8 print n_1 9 import re 10 nos = [] 11 for s in re.split('\s+', n_1[0]): 12 if s != '': 13 nos.append(float(s)) 14 print nos 15 print sum(nos) Better still use the csv module as suggested. Thank You, ++imanshu -- http://mail.python.org/mailman/listinfo/python-list