2

我的 python 脚本中有以下代码,用于启动应用程序并获取它的输出。

此输出的一个示例是“已确认:0”

现在我只想知道数字,在这种情况下为零,但通常这个数字是浮点数,比如 0.005464

当我运行这段代码时,它告诉我它不能将“0”转换为浮点数。我究竟做错了什么?

这是我现在得到的错误: ValueError: could not convert string to float: "0"

cmd = subprocess.Popen('/Applications/Electrum.app/Contents/MacOS/Electrum getbalance', shell=True, stdout=subprocess.PIPE)
for line in cmd.stdout:
    if "confirmed" in line:
    a,b=line.split(': ',1)
    if float(b)>0:
        print "Positive amount"
    else:
        print "Empty"
4

2 回答 2

5

根据您得到的异常,包含的值b不是0,而是"0"(包括引号),因此不能直接转换为浮点数。您需要先删除引号,例如使用float(b.strip('"')).

从以下示例中可以看出,异常描述没有添加引号,因此它们必须是原始字符串的一部分:

>>> float('"0"')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: "0"
>>> float('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: a
于 2013-04-29T14:02:50.493 回答
-1

我测试了代码,发现 split(': ', 1) 结果包含字符串

>>> line = "1: 456: confirmed"
>>> "confirmed" in line
True
>>> a,b=line.split(': ', 1)
>>> a
'1'
>>> b
'456: confirmed'
于 2013-04-29T14:05:03.240 回答