### Question :

I’m trying to convert a set of strings from a txt file into int’s within a list. I was able to find a nice snippet of code that returns each line and then I proceeded to try and convert it to an int. The problem is that the numbers are in scientific notation and I get this error: ValueError: invalid literal for int() with base 10: ‘3.404788e-001’.

This is the code I’ve been messing around with

```
data = []
rawText = open ("data.txt","r")
for line in rawText.readlines():
for i in line.split():
data.append(int(i))
print data[1]
rawText.close()
```

##
Answer #1:

Use `float(i)`

or `decimal.Decimal(i)`

for floating point numbers, depending on how important maintaining precision is to you.

`float`

will store the numbers in machine-precision IEEE floating point, while `Decimal`

will maintain full accuracy, at the cost of being slower.

Also, you can iterate over an open file, you don’t need to use `readlines()`

.

And a single list comprehension can do everything you need:

```
data = [float(number)
for line in open('data.txt', 'r')
for number in line.split()]
```

If you really only need integers, you can use `int(float(number))`

##
Answer #2:

Your string looks like a `float`

, so convert it to a `float`

first.