如何使用python解析此文件?
我有一个包含如下内容的文件如何使用python解析此文件?,python,parsing,text,Python,Parsing,Text,我有一个包含如下内容的文件 [Input:1] Name=Feature1 Transform=Linear Slope=1 Intercept=0 [Input:4] Name=Feature2 Transform=Linear Slope=1 Intercept=0 [Input:2] Expression=( if ( > Var 10000000) ( - Var 10000000) ( + Var 10000000)) Transform=Freeform [Input:3
[Input:1]
Name=Feature1
Transform=Linear
Slope=1
Intercept=0
[Input:4]
Name=Feature2
Transform=Linear
Slope=1
Intercept=0
[Input:2]
Expression=( if ( > Var 10000000) ( - Var 10000000) ( + Var 10000000))
Transform=Freeform
[Input:3]
Transform=FreeForm
Expression=(if (> Var2 1) Var2 0)
Slope=1
Intercept=0
我需要创建一个对象列表,每个对象都包含上面给出的字段。因此[Input:1]将对应于对象1,其中将有4个变量,分别为名称、变换、斜率和截距。该字段的值(字符串)将分别为“Feature1”、“Linear”、“1”和“0”。请注意,每个对象可以有不同的字段。如何在python中实现这一点?我想你可以试试配置
import ConfigParser
conf = ConfigParser.ConfigParser()
conf.read("test.cfg")
sections = conf.sections()
print 'sections:', sections #sections: ['sec_b', 'sec_a']
options = conf.options("Input:1")
但是我误解了如何定义表达式,它只是一个字符串吗?你可以生成一个语法分析器,它可以通过BNF解析这个文件。使用Boson来实现这一点,Boson是一个轻量级语法分析器生成器 试试:
try:
# Python 2
import ConfigParser as cfgp
except:
# Python 3
import configparser as cfgp
class MyObject:
def __getitem__(self, attr):
return getattr(self, attr)
conf = cfgp.ConfigParser()
conf.optionxform = str
conf.read('sample.cfg')
objects = []
for section in conf.sections():
obj = MyObject()
for field, value in conf.items(section):
setattr(obj, field, value)
objects.append(obj)
然后,您可以通过以下方式获得字段值:
for obj in objects:
print(obj.Transform) # or obj.Name, etc
print(obj['Transform']) # or obj['Name'], etc
我想