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

2024-05-19 23:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我执行此操作来检索queryset:

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

它返回以下结果:

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

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

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

Tags: nametrueobjectsunicodelistquerysetvaluesbear
3条回答

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

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

您可以对所有值调用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']]

但是,最后,为什么要显式地将它们添加到django模板(比如{{ value }})中,u将消失。

我认为最简单的方法是使用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' ...]

相关问题 更多 >