Поскольку ваш файл в формате HOCON, вы можете попробовать использовать модуль синтаксического анализатора pyhocon
HOCON для решения вашей проблемы.
Установка: Либо запустите pip install pyhocon
, либо загрузите репозиторий github и выполните ручную установку с python setup.py install
.
Основное использование:
from pyhocon import ConfigFactory
conf = ConfigFactory.parse_file('text.conf')
print(conf)
Что дает следующую вложенную структуру:
ConfigTree([('apple', ConfigTree([('type', 'fruit'), ('varieties', ConfigTree([('color', 'red'), ('origin', 'usa')]))]))])
ConfigTree
- это просто collections.OrderedDict()
, как видно из исходного кода .
UPDATE:
Чтобы получить желаемый результат, вы можете создать собственную рекурсивную функцию для сбора всех путей:
from pyhocon import ConfigFactory
from pyhocon.config_tree import ConfigTree
def config_paths(config):
for k, v in config.items():
if isinstance(v, ConfigTree):
for k1, v1 in config_paths(v):
yield (k,) + k1, v1
else:
yield (k,), v
config = ConfigFactory.parse_file('text.conf')
for k, v in config_paths(config):
print('%s=%s' % ('.'.join(k), v))
Какие выходы:
apple.type=fruit
apple.varieties.color=red
apple.varieties.origin=usa