如何使用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
我想