我有一个由多个嵌套数组和字典组成的配置文件。我需要一个可以编辑任何变量的文本命令。这是在Python 3中。
以下是config(json)的示例:
{
"joinMsg":{
"help":[
"I need help",
"Type !help or !info"
]
}
命令语法可以更改为其他内容,但如下所示:
!config write joinMsg;help;1 'Try typing !help'
我想出了如何以这种方式从配置中读取,但我设置递归的方式意味着我没有办法替换该值。
这就是我所拥有的,数组就像joinMsg; help; 1 with; deliminators:
# reads from the config file
def configRead(arrays):
try:
arrays = configSearch(arrays)
print(arrays)
output = config
for r in arrays:
output = output[r]
except:
output = 'No array found'
return output
# recursive config helper
def configSearch(arrays):
searchRE = re.match(r'([^;]+);(.+)', arrays, re.I)
if searchRE:
output = configSearch(searchRE.group(2))
output.insert(0, searchRE.group(1))
return output
else:
return [arrays]
这段代码可能很糟糕(我没有经过正式培训)而且我不知道该怎么做。感谢任何帮助。谢谢。
答案 0 :(得分:0)
首先,这是一个修改后的configSearch
,它不使用递归,也处理数组索引:
def configSearch(arrays):
arrays = arrays.split(";")
return [int(a) if a.isdigit() else a for a in arrays]
然后这是一个新功能configWrite
,它将编辑配置配置并用新arrays
覆盖value
:
def configWrite(arrays, value):
arrays = configSearch(arrays)
print(arrays)
output = config
for r in arrays[:-1]:
output = output[r]
output[arrays[-1]] = value