解析INI节中的多个“ key” =“ value”对

时间:2019-02-20 02:02:40

标签: python-2.7 ini configparser ansible-inventory

我需要使用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以及同一行中的其余键=值对(domain_name = google; location = external)解析为字典中的每个部分。任何对此表示赞赏的指针。

1 个答案:

答案 0 :(得分: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

希望这会有所帮助!