将包含字符串的文件转换为浮点数然后添加它们

Converting a File with Strings into Floats then Adding Them

我必须为我的 class 创建一个程序来读取一个文件,将其中的数字列表转换为浮点数,然后将它们全部相加并只将答案打印到屏幕上。

我走得最远的是:

fname = sys.argv[1]
handle = open(fname, "r")
total = 0
for line in handle:
     linearr = line.split()
     for item in linearr:
          item = float(item)

其中一个文件如下所示:

0.13    10.2    15.8193
0.09    99.6
100.1
100.2   17.8    56.33    12
19e-2   7.5

尝试将转换后的列表添加到总计(总计 += 项目)没有成功。我真的迷路了,非常感谢任何帮助。

你快到了。 total += item 是正确的方法,在转换为 float 后将该行添加到 for 循环中。

确保在最后用 print(total) 打印你的结果,你可能也忘记了。

对于你的测试文件,这给了我结果 419.9593

您可以将 生成器表达式 sum 一起使用,将行拆分为列表并将每个子元素转换为浮点数:

In [9]: cat test.txt
0.13    10.2    15.8193
0.09    99.6
100.1
100.2   17.8    56.33    12
19e-2   7.5

In [10]: with open("test.txt") as f:
            sm = sum(float(s) for row in map(str.split, f) for s in row)
   ....:     

In [11]: sm
Out[11]: 419.9593

您还可以结合 itertools.chain 来展平行:

In [1]: from itertools import  chain

In [2]: with open("test.txt") as f:
            sm = sum(map(float, chain(*(map(str.split,f)))))
   ...:     

In [3]: sm
Out[3]: 419.9593

旁注,您应该始终使用 with 打开文件,它会自动为您关闭文件。