Разбор нескольких пар «ключ» = «значение» в разделе INI - PullRequest
0 голосов
/ 20 февраля 2019

Мне нужны указатели для анализа INI-файла с использованием Python 2.7 ConfigParser, который выглядит следующим образом:

[google]
www.google.com domain_name=google location=external 

[yahoo]
www.yahoo.com domain_name=yahoo location=external

Это то, что я пытался сделать:

Config = ConfigParser.ConfigParser()
try:
    Config.read("test.ini")
except Exception:
    pass

options = Config.options('google')
for option in options:
    print("Option is %s" % option)
    print("Value for %s is %s" % (option, Config.get('google', option)))

И этовот что получается:

Option is www.google.com domain_name
Value for www.google.com domain_name is google location=external

Я хочу иметь возможность анализировать www.google.com, и оставшиеся пары ключ = значение (имя_домена = google; местоположение = внешние) в одной строке для каждого разделав словарь.Любые указатели для этого приветствуются.

1 Ответ

0 голосов
/ 20 апреля 2019

То, что вы спрашиваете, - это способ циклически проходить по разным разделам и добавлять все значения параметров в словарь.

Если вы не застряли в макете, вы могли бы сделать что-то вроде этого

[google]
option=url=www.google.com,domain_name=google,location=external

[yahoo]
option=url=www.yahoo.com,domain_name=yahoo,location=external
import configparser

Config = configparser.ConfigParser()
try:
    Config.read("test.ini")
except Exception:
    pass

for section in Config.sections():
    for option in Config.options(section):
        values = Config.get(section, option)
        dict_values = dict(x.split('=') for x in values.split(','))

Вы также можете сделать словарь из словаря, но ваш вариант должен быть уникальным.

dict_sections = {}
for section in Config.sections():
    for option in Config.options(section):
        values = Config.get(section, option)
        dict_values = dict(x.split('=') for x in values.split(','))
        dict_sections[option] = dict_values

Другой вариант форматирования:

[web_sites]
yahoo=url=www.yahoo.com,domain_name=yahoo,location=external
google=url=www.google.com,domain_name=google,location=external

Надеюсь, это поможет!

...