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版权协议,转载请附上原文出处链接和本声明。