python解析java properties配置

def parse(template):
    head = {}
    for line in template.split("\n"):
        if line.strip().startswith("#"):
            continue
        if not line.strip():
            continue
        keys, value = line.split("=", maxsplit=1)
        keys, value = keys.strip(), value.strip()

        nx = None
        for key in keys.split("."):
            if nx is None:
                nx = head.setdefault(key, {})
            else:
                nx = nx.setdefault(key, {})
        nx["value"] = value
    return head
class SmartMapping:
    def __init__(self, mapping: dict):
        self.mapping = mapping

    def __getattr__(self, item):
        v = self.mapping.get(item)
        if isinstance(v, dict):
            return self.__class__(v)
        return v
    
template = """
    country.China.capital=Beijing
    country.China.area=960
    country.America.capital=WC
    world.center=China
    """

d = parse(template)
r = SmartMapping(d)

print(r.country.China.capital.value)
print(r.country.China.mapping)

版权声明:本文为xiaodongxiexie原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。