如何将科学计数值转换为浮点数
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]
我有以下格式的 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]