【问题标题】:Django QuerySet values_list returning unknown charactersDjango QuerySet values_list 返回未知字符
【发布时间】: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?

【问题讨论】:

    标签: python django list django-queryset


    【解决方案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 和我都在同时输入答案。

      【讨论】:

        猜你喜欢
        • 2016-09-05
        • 2011-07-09
        • 2011-09-18
        • 1970-01-01
        • 1970-01-01
        • 2015-04-15
        • 2019-07-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多