Python字典:去除u'字符

50 投票
7 回答
65616 浏览
提问于 2025-04-17 06:09

我该如何从下面这个字典中去掉u字符呢?

{u'name': u'A', u'primary_key': 1}  

这些数据是通过Mongo数据库find()查询得到的。

所以它看起来像这样:

{'name': 'A', 'primary_key': 1}

7 个回答

7

如果你只是想把字典(dict)转换成 JSON 数据字符串,你可以这样做:

>>> from bson.json_util import dumps
>>> data = {u'name': u'A', u'primary_key': 1}
>>> dumps(data)
'{"name": "A", "primary_key": 1}'
22

你看到的 u 字符其实是表示这些字符串是 Unicode 格式的。

如果你不想让它们是 Unicode 格式的,可以把它们转换成其他格式,比如 ASCII。

>>> s = u'hi!'
>>> s
u'hi'

>>> s2 = s.encode('ascii')
>>> s2
'hi'
56

一些数据库,比如 Sqlite3,允许你定义 转换器适配器 函数,这样你就可以把文本以 str 的形式获取,而不是 unicode。可惜的是,MongoDB 对于常用的数据类型,比如 str、decimal 或 datetime,并没有提供这样的选项:

既然 MongoDB 没有这些选项,那就只能写 Python 代码在获取数据后进行转换。你可以写一个递归函数,遍历结果来转换每个字段。

作为一个快速且简单的替代方案,这里有一个小技巧,可能会对你有帮助:

>>> import json, ast
>>> r = {u'name': u'A', u'primary_key': 1}
>>> ast.literal_eval(json.dumps(r))
{'name': 'A', 'primary_key': 1}

撰写回答