2013-04-29 75 views
1

我在我的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" 
+1

您能夠精確地複製/粘貼回溯嗎? – mgilson 2013-04-29 13:59:27

+0

回溯(最近通話最後一個): 文件 「maken.py」,行81,在 檢查=浮動(B) ValueError異常:無法將字符串轉換爲float: 「0」 – user2133342 2013-04-29 14:00:45

+1

做'印刷再版(行) ''之後'for'並粘貼它 – 2013-04-29 14:01:44

回答

4

根據你有例外,包含在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 
+0

剛剛嘗試過,但它只刪除了1個報價似乎:Traceback(最近調用最後一個): 文件「maken.py」,第81行,在 if float(b.strip '''))> 0: ValueError:無效文字float():0「 – user2133342 2013-04-29 14:07:06

+1

@ user2133342 - 如果有空格,在'」它。你可以嘗試:'if float(b.strip(''\ n'))'。再次想到,你的行可能以一個尾隨的換行符結尾,所以你需要去掉這些行。可能更容易替換引號:'float(b.replace(''',''))' – mgilson 2013-04-29 14:08:08

+0

@ user2133342:也許你在最後有一些空格,試試'b.strip()。strip('「 ').'。按照Jakub的建議,打印'repr(line)'會顯示你的字符串到底是什麼。 – interjay 2013-04-29 14:08:24

-1

我已經測試的代碼,發現分裂( ':',1)結果包含字符串

>>> line = "1: 456: confirmed" 
>>> "confirmed" in line 
True 
>>> a,b=line.split(': ', 1) 
>>> a 
'1' 
>>> b 
'456: confirmed' 
+0

您測試過的行包含多個':',一個OP只包含一個。 – interjay 2013-04-29 14:09:42

相關問題