2017-03-31 10 views
0

私はそうのような構造file.iniありますの取得値のConfigParserのうち代わりの文字列

item1 = a,b,c 
item2 = x,y,z,e 
item3 = w 

をし、私のConfigParserがこのように設定されている:

def configMy(filename='file.ini', section='top'): 
    parser = ConfigParser() 
    parser.read(filename) 
    mydict = {} 
    if parser.has_section(section): 
     params = parser.items(section) 
     for param in params: 
      mydict[param[0]] = param[1] 
    else: 
     raise Exception('Section {0} not found in the {1} file'.format(section, filename)) 
    return mydict 

今「mydictは」戻っていますキーと値のペアの文字列: {'item1': 'a,b,c', 'item2': 'x,y,e,z', 'item3':'w'}

リストを値として返すにはどのように変更できますか? {'item1': [a,b,c], 'item2': [x,y,e,z], 'item3':[w]}

+0

'ConfigParser'をサブクラス化し、' _read'メソッドをオーバーライドし、(オプション行の解析に使用される) 'RawParser.OPTCRE'正規表現を更新することもできます。しかし、最も簡単で信頼性の高い方法はおそらくコード内で '.split( '、')'を実行することです。 – FamousJameous

+0

param [1]に.split( '、')を追加しました!あなたがその質問に答えたいなら、私はそれを受け入れたものとしてマークします。 – Acoustic77

答えて

1

解析されたデータに対してsplitを使用すると、リストを分割できます。

def configMy(filename='file.ini', section='top'): 
    parser = ConfigParser() 
    parser.read(filename) 
    mydict = {} 
    if parser.has_section(section): 
     params = parser.items(section) 
     for param in params: 
      mydict[param[0]] = param[1].split(',') 
    else: 
     raise Exception('Section {0} not found in the {1} file'.format(section, filename)) 
    return mydict 

リストが単一の値しか持たない場合は、必要に応じてさらにロジックを追加して、単一の値に戻すことができます。または、分割する前にコンマを値でチェックしてください。

関連する問題