无法将字符串列表转换为浮点数

Rob*_*aze 3 python floating-point list

我的程序应该读取带有一堆数字的文本文档,并列出只有正数的列表.我无法将文本文档中的字符串转换为浮点数,因此我无法确定它们是否是正面的.

我链接了一个截图,因为我的副本粘贴有问题.

http://i.stack.imgur.com/L1Z7z.png

http://i.stack.imgur.com/L1Z7z.png

没有数字= float(number),我明白了['3.7', '-22', '3500', '38', '-11.993', '2200', '-1', '3400', '3400', '-3400', '-22', '12', '11', '10', '9.0']

dhg*_*dhg 5

您可以轻松地将该列表转换为浮点数:

>>> nums = ['3.7', '-22', '3500', '38', '-11.993', '2200', '-1', '3400', '3400', '-3400', '-22', '12', '11', '10', '9.0']
>>> map(float, nums)
[3.7, -22.0, 3500.0, 38.0, -11.993, 2200.0, -1.0, 3400.0, 3400.0, -3400.0, -22.0, 12.0, 11.0, 10.0, 9.0]
Run Code Online (Sandbox Code Playgroud)

但问题似乎是文件中的行不包含单独的浮点数.当你打电话时float(number),number是来自文件的一行,它(来自错误)似乎包含三个以空格分隔的数字"3.7 -22 3500".

你需要的是拆分调用float函数:

for line in f:
  for numberString in line.split()
    number = float(numberString)
    if(number > 0)
      numbers.append(number)
Run Code Online (Sandbox Code Playgroud)

或者,功能更多:

for line in f:
  numbers.extend([n for n in map(float, line.split()) if n > 0])
Run Code Online (Sandbox Code Playgroud)