我正在尝试将一组字符串从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()
答案 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
。