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