このような文字列があり、y、x、z の値を 3 つの float 変数に保存する必要があります。3 つの数値の長さと符号は一定ではありません。
{'y': 0.02, 'x': -1.0188, 'z': 2.026}
提案?
それが本当に文字列である場合に備えて、jsonで解析できます(またはeval
私が提案したくない):
import json
s = "{'y': 0.02, 'x': -1.0188, 'z': 2.026}".replace ("'", '"')
d = json.loads (s)
x, y, z = d ['x'], d ['y'], d ['z']
print (x, y, z)
ast.literal_evaldict
を使用して、これをこのようなものに簡単に変換できます
import ast
data = ast.literal_eval("{'y': 0.02, 'x': -1.0188, 'z': 2.026}")
print type(data)
出力
<type 'dict'>
そして、次のように の値にアクセスできますx
。y
z
print data['x'], data['y'], data['z']
json
またはを使用して、他の回答で説明されているように文字列をPython辞書に変換したら、ast
これを実行して、辞書内のすべての変数をグローバル変数に追加できます。
>>> data = {'y': 0.02, 'x': -1.0188, 'z': 2.026} # your parsed dictionary
>>> globals().update(data)
>>> print x
-1.0188
ここでglobals()
は、グローバルに定義されたすべての変数と関数を保持する辞書を取得update
し、辞書内の名前と値をそれらに追加するだけですdata
。
だけx
の場合、これは確かy
にz
やり過ぎですが、すべての変数に対して行う必要がないため、辞書/文字列にさらに多くの変数がある場合に便利ですx = data["x"]
。もちろん、これらの変数が重要な組み込み関数などを上書きしないようにする必要があります。
import collections
a=collections.OrderedDict({'y': 0.02, 'x': -1.0188, 'z': 2.026})
[y,x,z]=[ float(a[key]) for key in a]