我在我的代碼,這個變量分配從網絡獲取數據並將其轉換爲浮動(蟒蛇)使變量等於零如果數據類型不是數字
variable_1 = float(re.sub('[^0-9]','', basic_data_list[17]))
現在(提取號碼後,才)如果網頁上沒有數據(由「 - 」指定),我得到錯誤
ValueError:無法將字符串轉換爲float:這是預期的。
如果沒有數據可用,有什麼辦法可以讓零值分配給這個變量?在Python中有沒有Excels的IsError的等價物?
我在我的代碼,這個變量分配從網絡獲取數據並將其轉換爲浮動(蟒蛇)使變量等於零如果數據類型不是數字
variable_1 = float(re.sub('[^0-9]','', basic_data_list[17]))
現在(提取號碼後,才)如果網頁上沒有數據(由「 - 」指定),我得到錯誤
ValueError:無法將字符串轉換爲float:這是預期的。
如果沒有數據可用,有什麼辦法可以讓零值分配給這個變量?在Python中有沒有Excels的IsError的等價物?
首先,對於浮動,你應該接受.
和-
:
variable_1 = float(re.sub('[^0-9\-\.]','', basic_data_list[17]))
否則:
float(re.sub('[^0-9]','', '-3.5'))
將返回
35.0
然後:
variable_1 = float(re.sub('[^0-9\-\.]','', 'abc'))
產生了一個ValueError
。您可以使用try塊。甚至還有直接描述問題的文檔中的一個例子:
>>> while True:
... try:
... x = int(raw_input("Please enter a number: "))
... break
... except ValueError:
... print "Oops! That was no valid number. Try again..."
在except ValueError
部分,你可以如你所願定義variable_1
。需要注意的是0
並不總是爲「不是一個數字」來分配最佳值:
try:
variable_1 = float(re.sub('[^0-9\-\.]','', basic_data_list[17]))
except ValueError:
variable_1 = 0.0
查看更新。只需在'except'塊中設置'variable_1 = 0'即可。 –
查看@antonmik的回答。這是一個單線,但它不是很可讀的恕我直言。 –
謝謝!這很有幫助 – Stelios
str.isnumeric()作用於Unicode字符串。所以如果你使用:
unicode(basic_data_list[17]).isnumeric()
你會得到一個布爾值 - 數值爲真,非數值爲假。
所以我想沿着這些路線的東西會工作:
variable_1 = float(re.sub('[^0-9]','', basic_data_list[17] if unicode(basic_data_list[17]).isnumeric() else "0"))
從您的回覆
我使用Python 3的猜測您選擇繼承人什麼,我發現: NameError: global name 'unicode' is not defined - in Python 3
,你應該能夠通過將「unicode」替換爲「str」來使用此功能
您可以先檢查數據是否爲「 - 」。 – Shiping