私はユニコードを持っていu"{'code1':1,'code2':1}"
て、それを辞書形式にしたいです。
{'code1':1,'code2':1}
フォーマットで欲しい。
試しunicodedata.normalize('NFKD', my_data).encode('ascii','ignore')
ましたが、辞書ではなく文字列を返します。
誰でも私を助けることができますか?
私はユニコードを持っていu"{'code1':1,'code2':1}"
て、それを辞書形式にしたいです。
{'code1':1,'code2':1}
フォーマットで欲しい。
試しunicodedata.normalize('NFKD', my_data).encode('ascii','ignore')
ましたが、辞書ではなく文字列を返します。
誰でも私を助けることができますか?
組み込みast
パッケージを使用できます:
import ast
d = ast.literal_eval("{'code1':1,'code2':1}")
モジュールastの関数literal_evalに関するヘルプ:
literal_eval(node_or_string)
式ノードまたは Python 式を含む文字列を安全に評価します。提供される文字列またはノードは、次の Python リテラル構造のみで構成されている可能性があります: 文字列、数値、タプル、リスト、辞書、ブール値、およびなし。
を使用できますliteral_eval
。また、他の何かではなく、dictを作成していることを確認することもできます。の代わりにassert
、独自のエラー処理を使用してください。
from ast import literal_eval
from collections import MutableMapping
my_dict = literal_eval(my_str_dict)
assert isinstance(my_dict, MutableMapping)
編集:私の仮定が間違っていたことがわかりました。キーが二重引用符 (") で囲まれていないため、文字列は JSON ではありません。 これを回避する方法については、こちらを参照してください。
あなたが持っているのはJSON、別名 JavaScript Object Notationかもしれないと思います。
これを行うには、Python の組み込みjson
モジュールを使用できます。
import json
result = json.loads(u"{'code1':1,'code2':1}") # will NOT work; see above
組み込みeval
関数を使用して、文字列を Python オブジェクトに変換できます。
>>> string_dict = u"{'code1':1, 'code2':1}"
>>> eval(string_dict)
{'code1': 1, 'code2': 1}