Django QuerySet values_list 返回未知字符
Posted
技术标签:
【中文标题】Django QuerySet values_list 返回未知字符【英文标题】:Django QuerySet values_list returning unknown characters 【发布时间】:2012-01-25 15:56:52 【问题描述】:我正在使用 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?
【问题讨论】:
【参考方案1】:你可以这样做:
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]
【讨论】:
只是一个评论。要删除重复的项目,最好在查询中附加一个 distinct()。【参考方案2】:末尾的 L 表示它是长类型。它不会通过 print 语句打印,它只是告诉你这里存储的数字绝对不是整数。
如果您真的想摆脱它们,那么我想您可以执行以下操作:
lightdataNew = []
for num in lightdata:
lightdataNew.append(int(num))
lightdata = lightdataNew[:]
【讨论】:
【参考方案3】: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]
编辑:似乎 Goin、Makoto 和我都在同时输入答案。
【讨论】:
以上是关于Django QuerySet values_list 返回未知字符的主要内容,如果未能解决你的问题,请参考以下文章