2016-10-18 11 views
-1

私は上記のフィールドを含む各オブジェクトとオブジェクトのリストを作成する必要がpythonを使ってこのファイルを解析するには?

[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つの変数がName、Transform、Slope、およびInterceptとして与えられます。そのフィールドの値(文字列内)は、それぞれ「Feature1」、「Linear」、「1」、「0」になります。各オブジェクトは異なるフィールドを持つことができます。どのように私はこれをPythonで行うのですか?

+1

私はちょうどhttps://docs.python.org/2/library考えます/configparser.html –

答えて

1

試してみてください。

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 
0

、私はuが設定

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で、このファイルを解析することができ文法解析器を生成することができ、単に文字列

0

です。これを行うにはBosonを使用してください。Bosonは軽量の文法解析ツールです。

Boson Github

関連する問題