Python 2如何将值\u list操作返回的unicode列表更改为字符串列表

Python 2如何将值\u list操作返回的unicode列表更改为字符串列表,python,django,django-views,django-queryset,Python,Django,Django Views,Django Queryset,我执行此操作以检索查询集: Name.objects.values_list('name', flat=True) 然后返回这些结果: [u'accelerate', u'acute', u'bear', u'big'] 结果都是unicode(u')。如何将它们全部删除以获得结果: ['accelerate', 'acute', 'bear', 'big'] 您可以对所有值调用str(请注意,map有点懒,list()添加以立即将其变回可索引对象): 或者使用列表: [str(item)

我执行此操作以检索查询集:

Name.objects.values_list('name', flat=True)
然后返回这些结果:

[u'accelerate', u'acute', u'bear', u'big']
结果都是unicode(u')。如何将它们全部删除以获得结果:

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

您可以对所有值调用
str
(请注意,map有点懒,
list()
添加以立即将其变回可索引对象):

或者使用列表:

[str(item) for item in [u'accelerate', u'acute', u'bear', u'big']]

但最终,为什么您会明确要求它们是
str
;添加到django模板(如
{{value}}
),u将消失。

如果要用utf8编码,只需执行以下操作:

definitions_list = [definition.encode("utf8") for definition in definitions.objects.values_list('title', flat=True)]

我认为最简单的方法是使用
json.dumps()

因此,您将获得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' ...]
我用过这个

my_list = list(map(str, [u'accelerate', u'acute', u'bear', u'big'...]))

在Python2.7中,使用不带列表的映射进行调整也很好

list_of_python_strings = map(str, [u'accelerate'])

如前所述,可以省略list()调用。我这样做没有遇到任何问题。如果你能详细说明为什么会有问题,我将不胜感激!嗯,你说得对。刚刚在py27和py34中尝试过这个,其中py27返回一个
列表
,py34返回一个
映射
对象。在模板中使用可能没有区别。我将保留原样的答案,因为解释器的输出更加清晰(没有
list()
,py3将声明类似
)。
my_list = list(map(str, [u'accelerate', u'acute', u'bear', u'big'...]))
list_of_python_strings = map(str, [u'accelerate'])