dict exの形式の文字列出力があります。
{'key1':'value1','key2':'value2'}
文字列ではなく辞書として簡単に保存するにはどうすればよいですか?
dict exの形式の文字列出力があります。
{'key1':'value1','key2':'value2'}
文字列ではなく辞書として簡単に保存するにはどうすればよいですか?
astr は、「辞書の形式」の文字列です。
ast.literal_eval
それを python dict オブジェクトに変換します。
In [110]: import ast
In [111]: astr="{'key1':'value1','key2':'value2'}"
In [113]: ast.literal_eval(astr)
Out[113]: {'key1': 'value1', 'key2': 'value2'}
これは、eval のセキュリティ ホールの影響を受けないため、Python 2.6 以降を使用している場合に最適です。
import ast
s = """{'key1':'value1','key2':'value2'}"""
d = ast.literal_eval(s)
この文字列はどこから取得していますか?JSON形式ですか?またはPython辞書形式?それとも、Python辞書に似ているアドホック形式ですか?
JSONの場合、またはdictのみで、文字列や数値のみが含まれている場合は、を使用できますjson.loads
。これは、Pythonコードを解析できないため、最も安全なオプションです。
このアプローチにはいくつかの欠点がありますが、たとえば、文字列が二重引用符では'
なく一重引用符で囲まれている場合、 "
jsonオブジェクト/配列のみを解析することは言うまでもなく、偶然にもpythons dicts/arraysと同様の構文を共有します。
取得している文字列はJSON形式であることが意図されている可能性が高いと思いますが。これはデータ交換の一般的な形式であるため、私はこの仮定をします。
json.loads を使用 - より高速な場合があります