ss = """a_string = 'something'
filtersToCheck = ['foo', '192.168.1.2', 'barbaz']
a_tuple = (145,'kolo',45)"""
import re
regx = re.compile('^ *([^= ]+) *= *(.+)',re.MULTILINE)
for mat in regx.finditer(ss):
x = eval(mat.group(2))
print 'name :',mat.group(1)
print 'value:',x
print 'type :',type(x)
print
結果
name : a_string
value: something
type : <type 'str'>
name : filtersToCheck
value: ['foo', '192.168.1.2', 'barbaz']
type : <type 'list'>
name : a_tuple
value: (145, 'kolo', 45)
type : <type 'tuple'>
その後
li = [ (mat.group(1),eval(mat.group(2))) for mat in regx.finditer(ss)]
print li
結果
[('a_string', 'something'), ('filtersToCheck', ['foo', '192.168.1.2', 'barbaz']), ('a_tuple', (145, 'kolo', 45))]
可能な複製:http://stackoverflow.com/questions/335695/lists-in-configparser –
私の意見では、それは同じではありません。私はそれを行うことができますが、私はよりエレガントな方法を探していますそれ以外にも、このリンクは3年ほど経っており、その後Pythonには言語として多くのことが起こっています。 – pootzko
ConfigParserモジュールは、このユースケースを処理するために更新されていません。しかし、文字列中の '、'をチェックするためにそれをサブクラス化することができます。 – katrielalex