0

我想转换一个这样的字符串:

{u'confirm_token': u'98c21e111f25550943e29e34e65ae1dd71968ff652cb933c2f998e4f',
 u'confirmed_account': False, u'confidential': {}, u'contacts': [],
 u'_id': ObjectId('4e0a761d7c93dd25bc000021'), u'settings': {u'email': u''},
 u'here': [], u'creation_date': datetime.datetime(2011, 6, 29, 2, 47, 25),
 u'profil': {u'gender': u'Male', u'first_name': u'Test', u'last_name': u'Test',
 u'email_address': u'email@address.com', u'photo': u'picture.png'},
 u'attending': [], u'requests': [],
 u'password': u'b04b55d5f4555e5d7252e7f74aaf4dc538639fa6864f3d8004c61635'}

到 Python 中的字典。我实际上尝试使用该功能json.load(),但由于每个键和值之前的 Unicode,它不起作用。有谁知道该怎么做?

4

3 回答 3

3

将其转换为 Python 对象的唯一简单方法是使用eval()(提供ObjectId一些有效的 Python 类)。仅当字符串来自受信任的来源时,这将是一个选项。更安全的函数ast.literal_eval()不适用于这种情况——它无法评估ObjectId()调用。

您真的应该尝试修复您从中获得此字符串的任何内容,以使用合理的序列化格式。

于 2012-07-13T16:55:59.393 回答
1

ast.literal_eval()(或者更确切地说,它的实现)将使您大部分时间到达那里。其余的将走 AST 以ObjectId()适当地替换呼叫。

于 2012-07-13T16:58:49.003 回答
-1

为什么不拆分这个字符串然后存储在字典中。我遇到了同样的问题, eval 或 literal_eval 都不适合我

于 2013-06-14T14:30:41.600 回答