7

我执行了这个操作来检索一个查询集:

Name.objects.values_list('name', flat=True)

它返回以下结果:

[u'accelerate', u'acute', u'bear', u'big']

结果都是 unicode (u')。如何将它们全部删除以获得结果:

['accelerate', 'acute', 'bear', 'big']
4

5 回答 5

14

如果你想用 utf8 编码,你可以简单地做:

definitions_list = [definition.encode("utf8") for definition in definitions.objects.values_list('title', flat=True)]
于 2013-02-15T13:40:53.817 回答
9

您可以调用str所有值(注意 map 有点懒惰,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 }})中,u 将消失。

于 2013-02-15T13:39:57.707 回答
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' ...]
于 2014-09-01T08:23:01.810 回答
1

在 python 2.7 中使用不带列表的 map 也可以

list_of_python_strings = map(str, [u'accelerate'])
于 2016-09-30T20:56:11.693 回答
0

我用这个

my_list = list(map(str, [u'accelerate', u'acute', u'bear', u'big'...]))
于 2015-09-08T10:52:39.247 回答