我执行此操作以检索查询集:
Name.objects.values_list('name', flat=True)
它会返回以下结果:
[u'accelerate', u'acute', u'bear', u'big']
结果都是unicode(u')。如何将它们全部删除以便得到结果:
['accelerate', 'acute', 'bear', 'big']
答案 0 :(得分:14)
如果你想用utf8编码,你可以简单地做:
definitions_list = [definition.encode("utf8") for definition in definitions.objects.values_list('title', flat=True)]
答案 1 :(得分:9)
您可以在所有值上调用str
(请注意,地图有点懒,添加了list()
以立即将其转回可转换对象):
thingy = list(map(str, [u'accelerate', u'acute', u'bear', u'big']))
或使用列表理解:
[str(item) for item in [u'accelerate', u'acute', u'bear', u'big']]
最后,为什么要求他们明确地str
;添加到django模板(如{{ value }}
),你将消失。
答案 2 :(得分:2)
我认为简短的方法是使用json.dumps()
json.dumps(definitions.objects.values_list('title', flat=True))
因此您将获得字符串结果为json格式,如
'["accelerate", "acute", "bear", "big" ...]'
如果你想把它改成python变量,只需使用eval
作为函数,所以你的代码更像这样
json_format_string = json.dumps(definitions.objects.values_list('title', flat=True))
my_list = eval(json_format_string) # ['accelerate', 'acute', 'bear', 'big' ...]
答案 3 :(得分:1)
在python 2.7中使用没有列表的地图也很好
list_of_python_strings = map(str, [u'accelerate'])
答案 4 :(得分:0)
我用过这个
my_list = list(map(str, [u'accelerate', u'acute', u'bear', u'big'...]))