在INI部分解析多个“key”=“value”对

问题描述 投票:0回答:1

我需要使用python 2.7 ConfigParser来解析INI文件的指针,如下所示:

[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和剩余的key = value对(domain_name = google; location = external)解析为字典中每个部分的同一行。任何指针都表示赞赏。

python-2.7 ini configparser ansible-inventory
1个回答
0
投票

我认为你要问的是循环不同部分并将所有选项值添加到字典中的方法。

如果你没有坚持布局,你可以做这样的事情

[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

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.