0
將字符串轉換爲浮點數時出現了一些奇怪的事情。無法將字符串轉換爲浮點數:...有時
所以,當我正好使用下面的代碼寫入:
[1468436874000, 0.00254071495719],
[1468528803000, 0.00341349353996],
[1468688596000, 0.000853373384991],
[1468871365000, 0.00256012015497],
它停止短,應該有比這更約30行,而這些都是錯誤的計算。
功能是:
def main():
minprice = pricelist('MIN')
maxprice = pricelist('MAX')
avgprice = pricelist('AVG')
avgsqft = sqftlist()
datelist = getdates()
index = fileparser()
with open('/home/andrew/Desktop/index3.htm', 'w') as file:
file.writelines(data[:index[0]])
for date, minprice, maxprice in zip(datelist, minprice, maxprice):
file.writelines('[%s, %s, %s],\n' % (date, minprice, maxprice))
file.writelines(data[index[1]:index[2]])
for date, avgprice in zip(datelist, avgprice):
file.writelines('[%s, %s],\n' % (date, avgprice))
file.writelines(data[index[3]:index[4]])
for date, avgprice, avgsqft in zip(datelist, avgprice, avgsqft):
file.writelines('[%s, %s],\n' % (date, ((float(avgprice))/(float(avgsqft)))))
file.writelines(data[index[5]:])
file.close()
的錯誤是:
file.writelines('[%s, %s],\n' % (date, ((float(avgprice))/(float(avgsqft)))))
ValueError: could not convert string to float: .
奇怪的是,當我註釋掉其他爲前循環,其結果是:
[1468436874000, 2.82644376127],
[1468528803000, 2.86702735915],
[1468688596000, 2.8546107764],
[1468871365000, 2.8546107764],
[1468871996000, 2.8546107764],
[1468919656000, 2.85383420662],
[1469004050000, 2.85189704903],
[1469116491000, 2.87361540168],
[1469189815000, 2.86059636119],
[1469276601000, 2.83694745621],
[1469367041000, 2.83903252711],
[1469547497000, 2.83848688853],
[1469649630000, 2.83803033196],
[1469736031000, 2.82327110329],
[1469790030000, 2.82650020338],
[1469876430000, 2.96552660866],
[1470022624000, 2.93407180385],
此外,當我使用枚舉而不是zip(並進行適當的更改)時,它可以工作。我已經在第五個項目中檢查了這兩個列表中的任何不尋常的東西,因爲這是它掛起的地方,但是這兩個列表中都沒有什麼奇怪的。既然它枚舉工作正常,我現在就這樣做。但我一般都是Python /編程的新手,並且想知道究竟是什麼導致了這一點。
UPDATE本來應該包括這第一次。
# file.writelines(data[:index[0]+1])
# for date, minprice, maxprice in zip(datelist, minprice, maxprice):
# file.writelines('[%s, %s, %s],\n' % (date, minprice, maxprice))
# file.writelines(data[index[1]:index[2]+1])
# for date, avgprice in zip(datelist, avgprice):
# file.writelines('[%s, %s],\n' % (date, avgprice))
# file.writelines(data[index[3]:index[4]+1])
# time.sleep(1)
for date, avgprice, avgsqft in zip(datelist, avgprice, avgsqft):
# file.writelines(
print'[%s, %s],\n' % (date, ((float(avgprice))/(float(avgsqft))))
# file.writelines(data[index[5]:])
# file.close()
打印...(正確)
[1468436874000, 2.82644376127],
[1468528803000, 2.86702735915],
[1468688596000, 2.8546107764],
[1468871365000, 2.8546107764],
[1468871996000, 2.8546107764],
[1468919656000, 2.85383420662],
etc...
我試過了,並沒有看到任何奇怪的周圍的第4至第5項。這是否能解釋爲什麼它不能以這種方式工作? –
代碼正在打印的最後一個'avgprice'和'avgsqft'值是什麼? –
嗯。在循環印刷中打印avgprice和avgsqft 3 1180.77 4 1171.82 1 1171.82 3 1171.82。 *錯誤*因此,基本上它會對價格的每個字符進行迭代,並在小數處得到一個錯誤,這就解釋了爲什麼它會打印一些錯誤的數字,然後停止。我不確定爲什麼當其他兩個循環被註釋掉時,它的工作原理是不同的。有任何想法嗎? –