2

dict exの形式の文字列出力があります。

{'key1':'value1','key2':'value2'} 

文字列ではなく辞書として簡単に保存するにはどうすればよいですか?

4

4 に答える 4

5

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'}
于 2009-10-18T16:16:10.050 に答える
4

これは、eval のセキュリティ ホールの影響を受けないため、Python 2.6 以降を使用している場合に最適です。

import ast

s = """{'key1':'value1','key2':'value2'}"""
d = ast.literal_eval(s)
于 2009-10-18T22:57:07.020 に答える
1

この文字列はどこから取得していますか?JSON形式ですか?またはPython辞書形式?それとも、Python辞書に似ているアドホック形式ですか?

JSONの場合、またはdictのみで、文字列や数値のみが含まれている場合は、を使用できますjson.loads。これは、Pythonコードを解析できないため、最も安全なオプションです。

このアプローチにはいくつかの欠点がありますが、たとえば、文字列が二重引用符では'なく一重引用符で囲まれている場合、 "jsonオブジェクト/配列のみを解析することは言うまでもなく、偶然にもpythons dicts/arraysと同様の構文を共有します。

取得している文字列はJSON形式であることが意図されている可能性が高いと思いますが。これはデータ交換の一般的な形式であるため、私はこの仮定をします。

于 2009-10-19T01:38:44.833 に答える
1

json.loads を使用 - より高速な場合があります

于 2009-10-18T22:27:30.863 に答える