我的python脚本中有以下代码,用于启动应用程序并获取它的输出。
此输出的一个示例是'已确认:0'
现在我只想知道数字,在这种情况下为零,但通常这个数字是浮点数,如0.005464
当我运行此代码时,它告诉我它不能将“0”转换为float。我做错了什么?
这是我现在得到的错误: ValueError:无法将字符串转换为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"
答案 0 :(得分: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
答案 1 :(得分:-1)
我测试了代码并发现split(':',1)结果包含字符串
>>> line = "1: 456: confirmed"
>>> "confirmed" in line
True
>>> a,b=line.split(': ', 1)
>>> a
'1'
>>> b
'456: confirmed'