我想转换一个类似的字符串:
{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,它不起作用。有谁知道怎么做?
答案 0 :(得分:3)
将其转换为Python对象的唯一简单方法是使用eval()
(提供ObjectId
是一些有效的Python类)。如果字符串来自受信任的来源,则这只是一个选项。更安全的函数ast.literal_eval()
在这种情况下无效 - 它无法评估ObjectId()
调用。
您应该尝试修复从此字符串获取的任何内容,以使用合理的序列化格式。
答案 1 :(得分:1)
ast.literal_eval()
(或者更确切地说是它的实现)会让你大多数的方式。其余的将走AST,以适当地替换ObjectId()
电话。
答案 2 :(得分:-1)
为什么不split这个字符串,然后存储在字典中。我有同样的问题,eval或literal_eval都没有为我工作