我有一个这样的字符串,我需要将 y、x、z 的值保存到 3 个浮点变量中。这三个数字的长度和符号不是恒定的。
{'y': 0.02, 'x': -1.0188, 'z': 2.026}
建议?
您可以使用ast.literal_eval将其简单地转换为dict
这样的
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 解析它(或者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)
按照其他答案中的说明将字符串转换为 Python 字典后,使用json
or 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
但如果您在 dict/string 中有更多变量,它会很方便,因为您不必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]