当前位置: 首页 > 面试题库 >

python ValueError:无效的文字float()

能可人
2023-03-14
问题内容

我有一个读取温度数据的脚本:

def get_temp(socket, channels):

    data = {}
    for ch in channels:
        socket.sendall('KRDG? %s\n' % ch)
        time.sleep(0.2)
        temp = socket.recv(32).rstrip('\r\n')

        data[ch] = float(temp)

有时,脚本在将值转换为float的行上失败:

get_temp
数据中的文件“ ./projector.py”,第129行[ch] = float(temp)
ValueError:float()的无效文字:+ 135.057E + 0
+ 078.260E + 0
+00029

但这不是无效的文字。如果我将其输入任何python shell中,

float(+135.057E+0)

那么它会正确返回135.057。

那是什么问题呢?


问题答案:

我几乎可以保证,问题是拔出套接字的值中存在某种非打印字符。看起来您正在使用Python 2.x,在这种情况下,您可以使用以下命令进行检查:

print repr(temp)

您可能会在其中看到以表格形式转义的内容\x00。当您直接在控制台上打印时,这些非打印字符不会显示,但是它们的存在足以负面影响将字符串值解析为浮点型。

-为问题更改而编辑-

事实证明,这在某种程度上对于您的问题是准确的-但是,根本原因似乎是您正在从套接字读取比预期更多的信息,或者接收到多个值。你可以做类似的事情

map(float, temp.strip().split('\r\n'))

为了转换每个值,但是如果您的函数应该返回单个浮点值,则可能会引起混淆。无论如何,问题肯定是与从套接字检索到的值中没有出现的字符有关。



 类似资料:
  • 问题内容: 我正在为某个项目编写代码来确定信用卡的有效性,但是我碰壁了,看来到目前为止我尝试过的所有方法都没有用。 这给了sumofodds函数一个错误,其中j = int(card [i]) 错误是“无效的文字为Int()与Base 10 有没有人可以给我一些帮助? 这是那些想知道的人的完整追溯 问题答案: 好吧,无论您输入什么内容,实际上都不是以10为底的数字。这包括非数字字符或空格的任何内容

  • 我试图运行我在网上找到的刮板,但收到一个ValueError:太多的值在这行代码上解包 这条线是这个函数的一部分 如果您有任何意见,我们将不胜感激,谢谢。

  • 问题内容: 我编写了一个程序来求解,然后将其投影在图形上。问题是,每当出现错误时: ValueError:int()以10为底的无效文字。 有什么建议? 这是回溯: 每当我输入一个小于1但大于0的数字时,就会出现问题。在此示例中为0.3。 这是我的代码: 问题答案: 您的回溯告诉您采用整数,您试图给出一个十进制数,因此您需要使用: 这应该按预期工作: 计算机以各种不同的方式存储数字。Python有

  • 问题内容: 我需要一些帮助,因为这是我第一次编码密码。 加密代码似乎可以正常工作,但是解密会引发错误。 我得到的错误是: de.flexiprovider.api.exceptions.BadPaddingException:无效的密文 在代码末尾的 解密函数中 ,该标记为注释 //这里抛出错误!.................................... 我已包括所有进口商品,请原谅

  • 问题内容: 每次尝试编码时,它都有效,但是当我键入代码时,出现错误: ValueError:int()以10为基的无效文字:“停止” 问题答案: 传递给的字符串应仅包含数字: 一个快速的解决方法是在此处使用异常处理: 而且您可以使用匹配“ stop”的任何大小写组合:

  • 问题内容: 我正在创建一个读取文件的程序,如果文件的第一行不为空白,它将读取接下来的四行。在这些行上执行计算,然后读取下一行。如果该行不为空,则继续。但是,我收到此错误: 它正在读取第一行,但无法将其转换为整数。 我该怎么做才能解决此问题? 代码: 问题答案: 仅作记录: 我在这里…