-2

我有一个文件,其中的值采用科学记数法 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
4

3 回答 3

1

您可以使用上下文管理器从文件中读取:

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))
于 2019-08-25T20:17:28.873 回答
1

从您的错误消息来看,您的数字由 分隔,,而不是空格。因此,您必须line.split(',')改用。

with open('data.txt', 'r') as in_stream:
    data = [
        int(float(number))
        for line in in_stream
        for number in line.split(',')
    ]
于 2019-08-25T20:23:15.877 回答
0

尝试这样的事情。您需要拆分字符串,然后在每个项目上应用 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(',')]
于 2019-08-25T20:20:14.637 回答