在Python中将字符串(带科学记数法)转换为int

Dam*_*anJ 11 python

我正在尝试将一组字符串从txt文件转换为列表中的int.我能够找到一个很好的代码片段,返回每一行,然后我继续尝试将其转换为int.问题是数字是科学记数法,我得到这个错误:ValueError:int()的基数为10的无效文字:'3.404788e-001'.

这是我一直在搞乱的代码

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()
Run Code Online (Sandbox Code Playgroud)

tza*_*man 19

使用float(i)或decimal.Decimal(i)表示浮点数,具体取决于维护精度对您的重要程度.
float将数字存储在机器精度IEEE浮点数中,同时Decimal保持完全准确性,代价是速度较慢.
此外,您可以迭代打开的文件,您不需要使用readlines().
单个列表理解可以完成您所需的一切:

data = [float(number)
        for line in open('data.txt', 'r')
        for number in line.split()]
Run Code Online (Sandbox Code Playgroud)

如果你真的只需要整数,你可以使用 int(float(number))


Ign*_*ams 5

您的字符串看起来像是float,因此将其转换为float第一个。