从python中的字符串中提取变量

时间:2013-10-16 18:31:09

标签: python string

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

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

建议?

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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'>

然后您可以像这样访问xyz的值

print data['x'], data['y'], data['z']

答案 2 :(得分:0)

一旦您将字符串转换为Python字典,如其他答案中所述,使用jsonast,您可以将字典中的所有变量添加到全局变量中:

>>> data = {'y': 0.02, 'x': -1.0188, 'z': 2.026} # your parsed dictionary
>>> globals().update(data)
>>> print x
-1.0188

在这里,globals()会为您提供一个包含所有全局定义的变量和函数的字典,而update只需将data字典中的名称和值添加到那些字典中。

如果你只有xyz这肯定是矫枉过正的,但是如果你在dict / string中有更多的变量,它就会很方便,因为你没有为所有人做x = data["x"]。当然,您应该确保这些变量不会覆盖重要的内置函数和类似函数。

答案 3 :(得分:-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]