1
我有一個使用案例,我將把複雜的字典作爲不一致的規則輸入。 一個用例是象下面這樣:如何使用python動態地將不一致的字典轉換爲.ini?
pro : 1
rel : 1.2
del : demo
cb :{
a : b
}
cd : {
en : {
b : a
}
}
cc : {
a : b
}
我以前是這樣的: -
def jsonToDict(data):
d = data
res = defaultdict(dict)
def dict2ini(d, root):
for k, v in d.items():
if isinstance(v, dict):
_key = '%s.%s' % (root, k) if root else k
if v:
dict2ini(v, _key)
else:
res[_key] = {}
elif isinstance(v, (str,int, float)):
res[root] = {k:v}
dict2ini(d, '')
config = configparser.RawConfigParser()
for key in sorted(res.keys()):
config.add_section(key)
for subKey, value in res[key].items():
config.set(key, subKey, value)
with open('example.ini', 'w') as configfile:
config.write(configfile)
,但上面並沒有處理所有出現在我的字典,但只在第一行的值每個部分。我經歷了[ConfigParser] [1]。但我無法找到解決方案,我的用例可以有人建議我一些解決方法,這也請注意上述數據不固定它會根據我們的需要而改變。
實例INI:
pro = 1
rel = 1.2
del = demo
[cb]
a=b
[cd.en]
b=a
## suppose if multiple data is present in cd then
[cd]
b=a
[cd.en]
b=a
## end
[cc]
a=b
您的代碼不完整;它訪問一個沒有在任何地方定義的詞典「res」。你能否也請修正你的代碼的縮進? 你想支持任意嵌套的字典嗎?你能舉一個例子說明生成的ini文件應該如何查看? –
我修正了上面也給出了輸出ini應該看起來像但它不固定的看法,只要json內容嵌入到ini中,並且可以正確理解任何格式都可以。..是的,我確實想支持任意嵌套的字典@SvenMarnach –
因此,如果有任何格式可以做,那麼'json =''怎麼樣? –