无法将字符串转换为浮点数:...有时
问题描述:
将字符串转换为浮点数时出现了一些奇怪的事情。无法将字符串转换为浮点数:...有时
所以,当我正好使用下面的代码写入:
[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...
答
调试在你的代码打印的avgprice
和avgsqft
值。你得到一些string
,因为它的价值不能转换为浮动
我试过了,并没有看到任何奇怪的周围的第4至第5项。这是否能解释为什么它不能以这种方式工作? –
代码正在打印的最后一个'avgprice'和'avgsqft'值是什么? –
嗯。在循环印刷中打印avgprice和avgsqft 3 1180.77 4 1171.82 1 1171.82 3 1171.82。 *错误*因此,基本上它会对价格的每个字符进行迭代,并在小数处得到一个错误,这就解释了为什么它会打印一些错误的数字,然后停止。我不确定为什么当其他两个循环被注释掉时,它的工作原理是不同的。有任何想法吗? –