When you are reading it in measurement is a string. The indicies of the string are going to be returned in your print statements.
Similar to having done this in the interpreter: In [17]: measurement = '+3.874693E01,+9.999889E03,+9.910000E+37,+1.876595E+04,+3.994000E+04' In [18]: measurement[1] Out[18]: '3' In [19]: measurement[0] Out[19]: '+' You need to split up your string and convert to floats. measurement = map(float, serkeith.readline().replace('\x11','').replace('\x13','').replace('\x0d','\n').split(',')) Something like that should work... to test in interpreter do the following : measurement = map(float, '+3.874693E01,+9.999889E03,+9.910000E+37,+1.876595E+04,+3.994000E+04'.split(',')) In [24]: measurement[0] Out[24]: 38.74693 -- http://mail.python.org/mailman/listinfo/python-list