我有一个文件,其中的值用科学表示法3.198304894802781462e + 00表示。我想将它们转换为整数。我已经尝试过了:
data = [int(float(number))
for line in open('data.txt', 'r')
for number in line.split()]
错误:
could not convert string to int: '1.874475383557408747e+01,3.627623082212955374e+00,9.037237691778705084
答案 0 :(得分:2)
您可以使用上下文管理器读取文件:
data = []
with open('data.txt', 'r') as fp:
for line in fp.readlines():
for number in line.split(','):
data.append(int(float(number.strip())))
如果要将数据列表追加到文件中:
with open('data.txt', 'a') as fp:
fp.write(",".join(str(e) for e in data))
答案 1 :(得分:2)
根据您的错误消息判断,您的数字以,
而不是空格分隔。因此,您必须改为使用line.split(',')
。
with open('data.txt', 'r') as in_stream:
data = [
int(float(number))
for line in in_stream
for number in line.split(',')
]
答案 2 :(得分:1)
尝试类似这样的方法。您需要分割字符串,然后将float函数应用于每个项目:
a = '1.874475383557408747e+01,3.627623082212955374e+00,9.037237691778705084'
b = a.split(',')
print(b)
for n in b:
print(float(n))
或简单地:
res = [float(n) for n in a.split(',')]
我假设您将数据作为字符串,但是从您的示例中应该可以:
data = [int(float(number))
for line in open('data.txt', 'r')
for number in line.split(',')]