Convert string (in scientific notation) to float

data-conversion, floating-point, python, string

Solution

The `float` function can do this:

>>> float('1.31E+01')
13.1

or for a list:

>>> map(float, ['3.76E+00', '1.31E+01', '1.14E+01'])
[3.76, 13.1, 11.4]

Problem

I'm trying to import a large .csv file containing text and numbers using `genfromtxt` in numpy. I'm only interested in two columns. I have most of the import sorted out with: ``` def importfile(root): data = root.entry.get() atw = np.genfromtxt(data, delimiter=",", skip_header=1, skip_footer=2, autostrip=True, usecols=(25,26), dtype=("|S10")) elem = atw[:,0] concs = atw[:,1] print(elem) print(concs) ``` With output for `elem` and `concs` respectively: ``` ['Na2O' 'MgO' 'Al2O3' 'SiO2' 'P2O5' 'SO3' 'Cl' 'K2O' 'CaO' 'TiO2' 'Cr2O3' 'MnO' 'FeO' 'NiO' 'Cu2O' 'ZnO' 'Ga2O3' 'SrO' 'Y2O3'] ['3.76E+00' '1.31E+01' '1.14E+01' '4.04E+01' '1.24E+00' '5.89E-02' '2.43E-02' '1.53E+00' '1.49E+01' '2.87E+00' '6.05E-02' '1.96E-01' '1.17E+01' '3.69E-02' '8.73E-03' '1.39E-02' '1.93E-03' '1.88E-01' '5.58E-03'] ``` I have tried many different things for converting the `concs` string into a float, but it doesn't seem to like the fact that the concs are in scientific notation... is there a way to turn the `concs` values into a float?

Original source