目前,我正在使用configparser从.ini文件中创建Person-class对象的字典,看起来像这样(在真正的字典中,还有更多的人):
[Pers1]
name = Alice
sex = female
[Pers2]
name = Bob
sex = male
此解析的字典称为people
,因此people['Pers1'].name
是name
的{{1}}属性,Pers1
。 "Alice"
是people['Pers2'].sex
,依此类推。
现在,假设我希望Alice拥有另一个名为"male"
的属性。 tags
将是一个字典,其结构如下:
tags
people['Pers1'].tags = {
'Employed':
{COMPANY: 'Macrosoft',
EMPLOYEE_SINCE: '1/5/2005'
},
'LicensedPilot':
{LICENSE_ISSUED: '6/7/2007',
EXPIRATION_DATE: '12/11/2017'
}
}
是一个可能为空的字典,或者可能包含更多字典(尽管只嵌套一个字典,因此tags
中没有字典词典...
有没有办法设置configparser来读取.ini并创建这些词典?
答案 0 :(得分:1)
INI本身就是一种平面格式。如果要在其中存储嵌套数据,则需要处理它。
例如,合格的属性名称:
[Pers1]
name = Alice
sex = female
tags.COMPANY = Macrosoft
tags.EMPLOYEE_SINCE = 1/5/2005
请注意,这些仍将作为“平面”退回。 options
列表,例如第一个标记的密钥为"tags.COMPANY"
。您需要在.
上拆分选项名称并自行处理结果。
另一种方法是使用一种格式来存储嵌套数据并直接翻译成列表和字典,例如YAML。