在python中将对象值转换为float

时间:2011-03-04 09:40:46

标签: python django

我将时间戳作为rrd数据库中的元组返回,即info变量将包含此

  

[(38177492.733055562,   38177482.886388876),(39370533.190833323,40563588.018611118)]

在我的代码中我将元组(38177492.733055562,38177482.886388876)转换为列表使用 list函数之后,我使用“index”变量访问元素,当我将此值传递给fromtimestamp函数时,它问我“float”值,那么如何将list对象转换为float原始数据类型?以下是整个代码

def hello(request):

        info = rrdtool.fetch('hello/test.rrd','AVERAGE','-r','3600','-s','1298264400','-e','1298350800')

    datalist = list()
    for index in range(0,len(info)):    
         val = list(info[index])
         dt_obj = datetime.fromtimestamp(float(val[index]))
         str=dt_obj.strftime("%d-%m-%Y %H:%M:%S")     
         datalist.append(str)

        data = simplejson.dumps(info, indent=4)
        return HttpResponse(data,mimetype='application/javascript')

我收到以下错误

a float is required

将代码更改为范围内的索引(0,len(info))后:我收到以下错误

invalid literal for float(): Out

1 个答案:

答案 0 :(得分:0)

你所做的事情没有多大意义,我担心 - indexinfo列表的索引,而不是val的索引,info是其中之一该列表中的元组。

此外,您无需将列表转换为元组即可访问元组的元素。

您的缩进在循环开始的行中被破坏,并且当您返回json版本的val时也是如此。

要解决您的问题,您可以先在错误发生前的行上打印val[index]type(val[index])for val in info: # I'm not sure if you want both values in the tuple here or just one... print >> sys.stderr, "val =", val dt_obj = datetime.fromtimestamp(val[0]) str=dt_obj.strftime("%d-%m-%Y %H:%M:%S") datalist.append(str) ,以检查它们是否符合您的期望 - 显然他们不是你得到的错误。

此外,您根本不需要将索引用于信息列表,您可以使用以下代码迭代列表中的值:

{{1}}