Python 从文本文件读取时如何将字符串转换为浮点

Python 从文本文件读取时如何将字符串转换为浮点,python,python-3.x,Python,Python 3.x,嘿,伙计们,我有一个文本文件,我试图读取和接收每个数字字符串 并将其转换为浮点数。但每次我尝试它时,它都会说“不能将字符串转换为浮点”。为什么会这样?谢谢 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"

嘿,伙计们,我有一个文本文件,我试图读取和接收每个数字字符串 并将其转换为浮点数。但每次我尝试它时,它都会说“不能将字符串转换为浮点”。为什么会这样?谢谢

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(“”)
引发异常,从而导致错误:

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

正如在注释中所说,避免捕获
异常
,并尝试在
try/except
中保留最少的代码行,以避免无提示错误。

在第二行末尾,您有一个逗号,因此列表中有一个空字符串
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)

正如在评论中所说的,避免捕捉异常,并尝试在一个
try/except
中使用最少的代码行,以避免无声错误。

输入
f

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

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

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

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

$ python f.py < f

输入
f

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

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

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

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

$ python f.py < f

首先,你能给出一个你试图解析的文件的例子吗?其次,告诉我们在哪一行
不能将字符串转换成浮点值。你确定文件中有
etc
?请发布一些真实的行。结尾有一个空字符串(如果尾随逗号是真实的)。是的,我刚刚发现了这一点,显然有一个尾随逗号,我刚刚从文本文件中删除了它,现在一切都正常了。首先,你能展示一个你试图解析的文件的示例吗?其次,请告诉我们在哪一行
无法将字符串转换为float
。您确定文件中有
etc
?请发布一些真实的行。结尾有一个空字符串(如果尾随逗号是真实的)。是的,我刚刚发现了这个问题,显然是尾随逗号,我刚从文本文件中删除了它,现在一切正常。你应该只捕获
ValueError
s,因为捕获任何
异常
都可能导致无提示故障。@2rs2ts是的,事实上是快速复制/粘贴…:)您应该只捕获
ValueError
s,因为捕获任何
Exception
都可能导致无声故障。@2rs2ts是的,事实上是快速复制/粘贴…:)