Django 从查询结果中移除 Unicode

1 投票
4 回答
3697 浏览
提问于 2025-04-16 13:27

Django查询给我的输出格式是这样的,但我想要下面这种格式

data=`[{'total': 1744, 'name: u'x'}, {'total': 13, 'name': u'm'}, {'total': 126, 'role': name'n'}]`
m=[]
for i in data:
   m.append(i.values())

打印m的时候,它给我的输出是

[[1744,u'x'], [13,u'm'], [126,u'n']]

但是我需要的输出是 怎么去掉输出中的unicode符号呢

[['x',1744], ['m',13], ['n',126]]

该怎么做呢?

提前谢谢你

4 个回答

0

使用 str() 函数。

>>> def byte_string(x):
...   return str(x) if isinstance(x, unicode) else x
...

>>> [[byte_string(x) for x in row] for row in d]
[[1744, 'x'], [13, 'm'], [126, 'n']]

注意,如果你的数据包含非ASCII字符串,这段代码会出错。

0

你不能指望字典里的键会按照特定的顺序出现(比如在 i.values() 中的值的顺序),所以最好的办法是写成这样:

m = []
for i in date:
    m.append([i['name'], i['total']])

注意:你应该遍历的是 date,而不是 m,因为在这个例子中 m 是空的。我在这里的代码中已经修正了这个问题。

4

试试这个:

>>> import json
>>> data=[{'total': 1744, 'name': u'x'}, {'total': 13, 'name': u'm'}, {'total': 126, 'name': u'n'}]
>>> json.dumps([i.values()[::-1] for i in data])
'[["x", 1744], ["m", 13], ["n", 126]]'
>>> 

撰写回答