如何将科学计数值转换为浮点数

How to convert scientific notation value to float

我有以下格式的 txt 文件:

 6.3894e+02 1.7316e+02 6.6733e+02 1.9942e+02 9.8697e-01
 6.4355e+02 1.7514e+02 6.8835e+02 2.0528e+02 9.7908e-01

我想将所有这些值转换为浮点数,如下所示:

 638.94 173.16 667.33 199.42 98.697
 643.55 175.14 688.35 205.28 97.908

我的代码是:

   import os
   for i in os.listdir():
       if i.endswith(".txt"):
          with open(i, "r+") as f:
               content = f.readlines()
               for line in content:
                   f.write(float(line))

您不能像那样就地更新文件。您可以为此使用 fileinput 模块。

您需要在空格处拆分行,将每个数字解析为浮点数,然后按照您想要的方式写入它们。

您也可以使用 glob() 来匹配所有 .txt 文件,而不是使用 os.listdir().endswith()。因为 fileinput 允许你给它一个文件列表,所以你不需要 for 循环。

import fileinput
from glob import glob


with fileinput.input(files=glob("*.txt"), inplace=True) as f:
    for line in f:
        nums = map(float, line.split())
        print(*nums)

对所有行尝试这样的操作:

   text = "6.3894e+02 1.7316e+02 6.6733e+02 1.9942e+02 9.8697e-01"
    numbers = text.split()
    numbers_float = [float(x) for x in numbers]