2014-02-21 128 views
0

嘿家伙,所以我有一个文本文件,我试图读取并接收每个数字字符串 并将其转换为浮点数。但每次我尝试它时,都会说“cannont convert string to float”。这是为什么发生?谢谢!如何将字符串转换为浮动当从文本文件中读取

try: 
    input_file = open("Dic9812.TFITF.encoded.txt","r") 
    output_fileDec = open("Dic9812.TFITF.decoded.txt","w") 
    output_fileLog = open("Dic9812.TFITF.log.txt","w") 
except IOError: 
    print("File not found!") 

coefficientInt = input("Enter a coefficient: ") 
coefficientFl = float(coefficientInt) 
constInt = input("Enter a constant: ") 
constFl = float(constInt) 

try: 
    for line in input_file: 
     for numstr in line.split(","): 
      numFl = float(numstr) 
      print(numFl) 
except Exception as e: 
    print(e) 

文件看起来是这样的:

135.0,201.0,301.0 
152.0,253.0,36.0,52.0 
53.0,25.0,369.0,25.0 

它结束了印刷的数字,但在最后它说: 不能把字符串转换为float:

+1

首先,您能不能告诉你试图解析该文件的例子吗? –

+1

其次,告诉我们'cannont convert string to float'发生在哪一行。 – 2014-02-21 21:40:10

+0

你确定*文件中有'etc'吗?请发布一些*真实*行。 – 2014-02-21 21:45:14

回答

5

在第二结束行,你有一个逗号,所以你在列表中有一个空字符串。 float('')引发异常,因此你的错误:

for line in input_file: 
    for numstr in line.split(","): 
     if numstr: 
      try: 
       numFl = float(numstr) 
       print(numFl) 
      except ValueError as e: 
       print(e) 

至于说的意见,避免赶上Exception,并尝试将代码的最低线在try/except以避免无记载错误。

+0

你应该赶上'ValueError's,因为捕获任何'Exception'可能会导致静默失败。 – 2rs2ts

+0

@ 2rs2ts是的,快速复制/粘贴其实...... :) –

0

输入f

135.0,201.0,301.0 
152.0,253.0,36.0,52.0 
53.0,25.0,369.0,25.0 

的Python f.py

import sys 

for line in sys.stdin.readlines(): 
    fs = [float(f) for f in line.split(",")] 
    print fs 

用法

$ python f.py < f 

输出

[135.0, 201.0, 301.0] 
[152.0, 253.0, 36.0, 52.0] 
[53.0, 25.0, 369.0, 25.0] 
相关问题