Spaces:
Sleeping
Sleeping
| #!/usr/bin/python3 | |
| # -*- coding: utf-8 -*- | |
| from typing import Callable | |
| def traverse(js, callback: Callable, *args, **kwargs): | |
| if isinstance(js, list): | |
| result = list() | |
| for l in js: | |
| l = traverse(l, callback, *args, **kwargs) | |
| result.append(l) | |
| return result | |
| elif isinstance(js, tuple): | |
| result = list() | |
| for l in js: | |
| l = traverse(l, callback, *args, **kwargs) | |
| result.append(l) | |
| return tuple(result) | |
| elif isinstance(js, dict): | |
| result = dict() | |
| for k, v in js.items(): | |
| k = traverse(k, callback, *args, **kwargs) | |
| v = traverse(v, callback, *args, **kwargs) | |
| result[k] = v | |
| return result | |
| elif isinstance(js, int): | |
| return callback(js, *args, **kwargs) | |
| elif isinstance(js, str): | |
| return callback(js, *args, **kwargs) | |
| else: | |
| return js | |
| def demo1(): | |
| d = { | |
| "env": "ppe", | |
| "mysql_connect": { | |
| "host": "$mysql_connect_host", | |
| "port": 3306, | |
| "user": "callbot", | |
| "password": "NxcloudAI2021!", | |
| "database": "callbot_ppe", | |
| "charset": "utf8" | |
| }, | |
| "es_connect": { | |
| "hosts": ["10.20.251.8"], | |
| "http_auth": ["elastic", "ElasticAI2021!"], | |
| "port": 9200 | |
| } | |
| } | |
| def callback(s): | |
| if isinstance(s, str) and s.startswith('$'): | |
| return s[1:] | |
| return s | |
| result = traverse(d, callback=callback) | |
| print(result) | |
| return | |
| if __name__ == '__main__': | |
| demo1() | |