python – 如何将字符串作为变量名称赋值传递

我有一个SDF数据文件,以块格式存储变量名称及其值.

varNameList一侧的值是变量(字符串)的名称,对应于sdf文件中的数据块,并且只能通过给出这些变量名来访问它.

我在ipython中使用以下代码读取数据文件和变量

import sdf
import numpy as np
dataFile = sdf.read('0010.sdf')

varNameList = dir(dataFile)  
varSize = np.size(varNameList)  #gives the array size
vName = 'dataFile.'+np.str(varNameList[51])+'.data'

变量名的输出如下:

In [71]:varNameList[51]
Derived_Number_Density_electron

In [72]:vName
'dataFile.Derived_Number_Density_electron.data'

现在,我希望在作业的右侧使用此字符串,例如

electronDensity = dataFile.Derived_Number_Density_electron.data

如果我在标准Python程序中编写这一行,它会读取数据并将其分配给electronDensity.

但是,在我的模拟中,这些变量是动态创建的,并且可以使用上面所写的dir()命令找到它们的名称.我无法创建相当于的程序行

electronDensity = dataFile.Derived_Number_Density_electron.data

最佳答案 您可以使用eval来评估Python中字符串的表达式.这是一个简单的例子:

>>> x = 123
>>> y = "x"
>>> z = eval(y)
>>> 
>>> print z
123

在您的情况下,您可以这样做:

electronDensity = eval(vName)
点赞