无法将字符串转换为浮点数:...有时

问题描述:

将字符串转换为浮点数时出现了一些奇怪的事情。无法将字符串转换为浮点数:...有时

所以,当我正好使用下面的代码写入:

[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... 

调试在你的代码打印的avgpriceavgsqft值。你得到一些string,因为它的价值不能转换为浮动

+0

我试过了,并没有看到任何奇怪的周围的第4至第5项。这是否能解释为什么它不能以这种方式工作? –

+0

代码正在打印的最后一个'avgprice'和'avgsqft'值是什么? –

+0

嗯。在循环印刷中打印avgprice和avgsqft 3 1180.77 4 1171.82 1 1171.82 3 1171.82。 *错误*因此,基本上它会对价格的每个字符进行迭代,并在小数处得到一个错误,这就解释了为什么它会打印一些错误的数字,然后停止。我不确定为什么当其他两个循环被注释掉时,它的工作原理是不同的。有任何想法吗? –