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

时间:2012-02-18 04:20:27

标签: 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()

2 个答案:

答案 0 :(得分:18)

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

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

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

答案 1 :(得分:4)

您的字符串看起来像float,因此请先将其转换为float