例如,我有以下字典:
{'foo': 'test',
'bar': {'test1': 'some text here'},
'baz': {'test2': {'test3': 'some text here', 'test4': 'some text here'}}}
或类似的东西,也许更多的水平.
现在问题是,我想改变……“这里的一些文字”改为“测试”.是的,我可以使用很多for循环,如下面的代码:
d = {'foo': 'test',
'bar': {'test1': 'some text here'},
'baz': {'test2': {'test3': 'some text here',
'test4': 'some text here'}}}
for i in d:
if d[i] == 'some text here':
d[i] = 'A test'
elif type(d[i]) == dict:
for j in d[i]:
if d[i][j] == 'some text here':
d[i][j] = 'A test'
elif type(d[i][j]) == dict:
for n in d[i][j]:
if d[i][j][n] == 'some text here':
d[i][j][n] = 'A test'
__import__('pprint').pprint(d)
输出:
{'bar': {'test1': 'A test'},
'baz': {'test2': {'test3': 'A test', 'test4': 'A test'}},
'foo': 'test'}
但是我认为这不是一个好方法……任何想法?
解决方法:
只要你改变的价值不是太多毛,这里就是一个单行:
In [29]: data = dict(foo=12, bar=dict(dd=12), ex=dict(a=dict(b=dict(v=12))))
In [30]: json.loads(re.sub("12", "33", json.dumps(data)))
Out[30]: {'bar': {'dd': 33}, 'ex': {'a': {'b': {'v': 33}}}, 'foo': 33}
编辑,每凯文,简单替换甚至不需要重新:
json.loads(json.dumps(data).replace("12", "33"))