преобразование значения объекта в float в python - PullRequest
0 голосов
/ 04 марта 2011

я получил метку времени, возвращенную как кортеж из базы данных rrd, т.е. переменная info будет содержать это

[(+38177492,733055562, 38177482.886388876), (39370533.190833323, 40563588.018611118)]

внутри моего кода я конвертирую кортеж (38177492.733055562,38177482.886388876) в список, используя Функция list, после этого я обращаюсь к элементу, используя переменную «index», и когда я передаю это значение в функцию fromtimestamp, она запрашивает у меня значение «float», так как я могу преобразовать объект списка в тип данных 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 голосов
/ 04 марта 2011

То, что вы делаете, не имеет особого смысла, боюсь, index - это индекс в списке info, а не в val, который является одним из кортежей в этом списке.

Кроме того, вам не нужно преобразовывать список в кортеж, чтобы получить доступ к элементу кортежа.

Ваш отступ нарушен в строке, где начинается цикл, а также когда вы отступаете, чтобы вернуть json-версию info.

Чтобы решить вашу проблему, вы можете начать с печати 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...