将科学计数法字符串转换为Python中的整数

16 投票
2 回答
35939 浏览
提问于 2025-04-17 13:12

我正在尝试把一个文本文件中的一组字符串转换成整数,并放到一个列表里。我找到了一段不错的代码,可以逐行读取文件内容,然后我试着把这些内容转换成整数。问题是,这些数字是用科学计数法表示的,所以我遇到了一个错误:ValueError: invalid literal for int() with base 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 个回答

5

你的字符串看起来像是一个float(浮点数),所以先把它转换成float吧。

22

对于浮点数,你可以使用 float(i) 或者 decimal.Decimal(i),这取决于你对精度的要求有多高。
float 会以机器精度的方式存储数字,这种方式比较快,但可能会有一些小误差;而 Decimal 则能保持完全的准确性,不过速度会慢一些。
另外,你可以直接遍历一个打开的文件,不一定要使用 readlines()
而且,你可以用一个简单的列表推导式来完成你需要的所有操作:

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

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

撰写回答