python将字符串“0”转换为浮点数给出错误
我在我的python脚本中有以下代码来启动应用程序并获取它的输出。python将字符串“0”转换为浮点数给出错误
这种输出的一个例子是“证实:0
现在我只是想知道电话号码,在这种情况下为零,但通常这个数量是浮动,就像0.005464
当我运行这段代码告诉我它不能将“0”转换为浮点数。我究竟做错了什么?
这是错误,现在我得到: 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"
根据你有例外,包含在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个报价似乎:Traceback(最近调用最后一个): 文件“maken.py”,第81行,在
@ user2133342 - 如果有空格,在'”它。你可以尝试:'if float(b.strip(''\ n'))'。再次想到,你的行可能以一个尾随的换行符结尾,所以你需要去掉这些行。可能更容易替换引号:'float(b.replace(''',''))' – mgilson 2013-04-29 14:08:08
@ user2133342:也许你在最后有一些空格,试试'b.strip()。strip('“ ').'。按照Jakub的建议,打印'repr(line)'会显示你的字符串到底是什么。 – interjay 2013-04-29 14:08:24
我已经测试的代码,发现分裂( ':',1)结果包含字符串
>>> line = "1: 456: confirmed"
>>> "confirmed" in line
True
>>> a,b=line.split(': ', 1)
>>> a
'1'
>>> b
'456: confirmed'
您测试过的行包含多个':',一个OP只包含一个。 – interjay 2013-04-29 14:09:42
您能够精确地复制/粘贴回溯吗? – mgilson 2013-04-29 13:59:27
回溯(最近通话最后一个): 文件 “maken.py”,行81,在 检查=浮动(B) ValueError异常:无法将字符串转换为float: “0” –
user2133342
2013-04-29 14:00:45
做'印刷再版(行) ''之后'for'并粘贴它 – 2013-04-29 14:01:44