用Python编写解析器

时间:2014-07-04 20:22:52

标签: python parsing config

我正在尝试用Python制作配置阅读器。配置具有以下结构:

@section:
    property = 'value'
end

@section2:
    property2 = 'value'
end

使用两个函数管理配置:

getValue(file, section, property)
setValue(file, section, property, newvalue)

但我不知道怎么做解析器。帮助PLZ:\

1 个答案:

答案 0 :(得分:0)

这很有趣。这应该完美。我不确定是否要删除你的价值旁边的单引号,但我决定把它们拿出来以保证输出的清洁。

with open('configfile.cfg') as f:
    data = f.readlines()

    config = {}
    current_section = None
    for line in data:
        line = line.strip()
        if line == 'end' or not line:
            continue

        if line.startswith('@'):
            current_section = line[1:-1]
            config[current_section] = {}
        else:
            key, value = line.split('=')
            config[current_section][key.strip()] = value.strip().strip("'")

    print(config)

为了将来参考,如果您提供一小部分实际数据然后描述数据,而不是给出类型名称,那么它将更容易提供帮助。例如,我将其用作配置文件:

@section:
    red = '3three'
end

@section2:
    blue = '4four'
    green = '5five'
end

并且这里是该配置文件的输出字典:

{'section': {'red': '3three'}, 'section2': {'blue': '4four', 'green': '5five'}}