0

我有一个这样的字符串,我需要将 y、x、z 的值保存到 3 个浮点变量中。这三个数字的长度和符号不是恒定的。

{'y': 0.02, 'x': -1.0188, 'z': 2.026}

建议?

4

4 回答 4

3

您可以使用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,就像这样yz

print data['x'], data['y'], data['z']
于 2013-10-16T18:39:41.637 回答
3

万一它真的是一个字符串,你可以用 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)
于 2013-10-16T18:35:38.100 回答
0

按照其他答案中的说明将字符串转换为 Python 字典后,使用jsonor 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,这肯定是矫枉过正yz但如果您在 dict/string 中有更多变量,它会很方便,因为您不必x = data["x"]对所有变量都这样做。当然,您应该确保这些变量不会覆盖重要的内置函数和类似函数。

于 2013-10-16T18:50:15.517 回答
-1
import collections
a=collections.OrderedDict({'y': 0.02, 'x': -1.0188, 'z': 2.026})
[y,x,z]=[ float(a[key]) for key in a] 
于 2013-10-16T18:39:14.510 回答