使用Unicode将字符串转换为Python中的字典

时间:2012-07-13 16:50:53

标签: python string unicode dictionary

我想转换一个类似的字符串:

{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,它不起作用。有谁知道怎么做?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

ast.literal_eval()(或者更确切地说是它的实现)会让你大多数的方式。其余的将走AST,以适当地替换ObjectId()电话。

答案 2 :(得分:-1)

为什么不split这个字符串,然后存储在字典中。我有同样的问题,eval或literal_eval都没有为我工作