Django QuerySet values_list, возвращающий неизвестные символы - PullRequest
2 голосов
/ 22 декабря 2011

Я использую django для получения некоторых данных с сервера MySQL, который у меня есть.В настоящее время у меня есть целый столбец данных («легкий» столбец) с сервера SQL.

Для этого я использую следующий код

weather = weatherdata.objects.values_list('light', flat=True)

lightdata = list(weather)

Когда я делаю это, список lightdata выглядит следующим образом:

[35L, 53L, 77L, 99L, 49L, 46L, 28L, 13L, 2L, 0L, 0L, 0L]  

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

Ответы [ 3 ]

4 голосов
/ 22 декабря 2011

Вы можете сделать что-то вроде этого:

l = [35L, 53L, 77L, 99L, 49L, 46L, 28L, 13L, 2L, 0L, 0L, 0L]
l = [int(item) for item in l]

Также, если вы хотите удалить реплицированные элементы:

l = [35L, 53L, 77L, 99L, 49L, 46L, 28L, 13L, 2L, 0L, 0L, 0L]
l = list(set(l))
l = [int(item) for item in l]
2 голосов
/ 22 декабря 2011

L в конце указывает на то, что это длинный тип. Он не будет печататься через оператор печати, а просто говорит вам, что число, сохраненное здесь, определенно не является целым числом.

Если вы действительно хотели от них избавиться, тогда, я полагаю, вы могли бы сделать что-то вроде следующего:

lightdataNew = []
for num in lightdata:
    lightdataNew.append(int(num))
lightdata = lightdataNew[:] 
1 голос
/ 22 декабря 2011

L обозначает длинное целое.

>>> a = long(5)
>>> a
5L
>>> print a
5

Вы можете преобразовать тип элементов в списке в зависимости от ваших потребностей, но это может быть необязательно.

>>> b = [int(i) for i in list_of_longs]
>>> c = [str(i) for i in list_of_longs]

Редактировать: Кажется, Гоин, Макото и я все печатали ответы одновременно.

...