我有一个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)