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 オブジェクトに変換する唯一の簡単な方法は、 を使用することです (有効な Python クラスがeval()提供されます)。ObjectIdこれは、文字列が信頼できるソースからのものである場合にのみオプションになります。この場合、より安全な関数は機能ast.literal_eval()しませんObjectId()。呼び出しを評価できません。

この文字列を取得するものは何でも、適切なシリアル化形式を使用するように修正する必要があります。

于 2012-07-13T16:55:59.393 に答える
1

ast.literal_eval()(またはその実装)は、ほとんどの場合、そこに到達します。残りは、ObjectId()呼び出しを適切に置き換えるために AST をウォークします。

于 2012-07-13T16:58:49.003 に答える
-1

この文字列を分割してから辞書に保存してみませんか。私は同じ問題を抱えていて、 eval もliteral_evalも私にとってはうまくいきませんでした

于 2013-06-14T14:30:41.600 に答える