科学的整数符号

时间:2019-08-25 20:09:07

标签: python python-3.7

我有一个文件,其中的值用科学表示法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

3 个答案:

答案 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(',')]