没时间完整写,直接上代码吧
# !usr/bin env python # -*- coding: utf-8 -*- import re import math def ConvertELogStrToValue(eLogStr): """ convert string of natural logarithm base of E to value return (convertOK, convertedValue) eg: input: -1.1694737e-03 output: -0.001169 input: 8.9455025e-04 output: 0.000895 """ (convertOK, convertedValue) = (False, 0.0) foundEPower = re.search("(?P<coefficientPart>-?\d+\.\d+)e(?P<ePowerPart>-\d+)", eLogStr, re.I) #print "foundEPower=",foundEPower if(foundEPower): coefficientPart = foundEPower.group("coefficientPart") ePowerPart = foundEPower.group("ePowerPart") #print "coefficientPart=%s,ePower=%s"%(coefficientPart, ePower) coefficientValue = float(coefficientPart) ePowerValue = float(ePowerPart) #print "coefficientValue=%f,ePowerValue=%f"%(coefficientValue, ePowerValue) #math.e= 2.71828182846 # wholeOrigValue = coefficientValue * math.pow(math.e, ePowerValue) wholeOrigValue = coefficientValue * math.pow(10, ePowerValue) #print "wholeOrigValue=",wholeOrigValue; (convertOK, convertedValue) = (True, wholeOrigValue) else: (convertOK, convertedValue) = (False, 0.0) return (convertOK, convertedValue) def parseIntEValue(intEValuesStr): # print "intEValuesStr=", intEValuesStr intEStrList = re.findall("-?\d+\.\d+e-\d+", intEValuesStr) # intEStrList = intEValuesStr.split(' ') # print "intEStrList=", intEStrList for eachIntEStr in intEStrList: # intValue = int(eachIntEStr) # print "intValue=",intValue (convertOK, convertedValue) = ConvertELogStrToValue(eachIntEStr) #print "convertOK=%s,convertedValue=%f"%(convertOK, convertedValue) print "eachIntEStr=%s,\tconvertedValue=%f" % (eachIntEStr, convertedValue) # intEValuesStr= 2.1690427e-005 -1.1694737e-003 -6.1193734e-004 # 8.9455025e-004 -8.6277081e-004 -7.2735757e-004 # intEStrList= ['2.1690427e-005', '-1.1694737e-003', '-6.1193734e-004', '8.9455025e-004', '-8.6277081e-004', '-7.2735757e-004'] # eachIntEStr=2.1690427e-005, convertedValue=0.014615 # eachIntEStr=-1.1694737e-003, convertedValue=-0.058225 # eachIntEStr=-6.1193734e-004, convertedValue=-0.112080 # eachIntEStr=8.9455025e-004, convertedValue=0.163843 # eachIntEStr=-8.6277081e-004, convertedValue=-0.158022 # eachIntEStr=-7.2735757e-004, convertedValue=-0.133220 if __name__ == "__main__": data_path = "/home/jianjiang/workingdir/CHA/linear-regression/data/data.txt" with open(data_path, 'r') as f: for line in f.readlines(): linestr = line.strip() # print linestr parseIntEValue(linestr)