Python中JSON/字典指定层级将key:pair转换为key=pair的问题
解决方法
你想要的是自定义格式的字符串输出,而非标准Python字典或JSON格式,所以json.loads、json.dumps这类处理标准格式的工具没法直接满足需求,得自己写逻辑控制输出格式。
步骤1:加载JSON文件
先把JSON文件转换成Python字典:
import json # 替换成你的JSON文件路径 with open('your_input.json', 'r', encoding='utf-8') as f: data = json.load(f)
步骤2:自定义格式转换函数
写一个递归函数,只在指定层级(比如你需要的顶层)把key: value改成key = value,嵌套结构保持原格式:
def custom_format(data, target_level=0, current_level=0): parts = [] if isinstance(data, dict): for key, value in data.items(): # 处理键的字符串格式 key_str = f"'{key}'" # 递归处理嵌套的字典/列表,字符串加引号 if isinstance(value, (dict, list)): value_str = custom_format(value, target_level, current_level + 1) elif isinstance(value, str): value_str = f"'{value}'" else: value_str = str(value) # 判断当前层级,选择分隔符 if current_level == target_level: parts.append(f"{key_str} = {value_str}") else: parts.append(f"{key_str}: {value_str}") # 添加缩进和换行,让格式更清晰 indent = " " * current_level inner_indent = " " * (current_level + 1) return "{" + f"\n{inner_indent}" + f",\n{inner_indent}".join(parts) + f"\n{indent}" + "}" elif isinstance(data, list): items = [] for item in data: items.append(custom_format(item, target_level, current_level + 1)) indent = " " * current_level inner_indent = " " * (current_level + 1) return "[" + f"\n{inner_indent}" + f",\n{inner_indent}".join(items) + f"\n{indent}" + "]" else: return str(data)
步骤3:生成目标格式
调用函数处理数据,指定只修改顶层(target_level=0):
formatted_result = custom_format(data, target_level=0) print(formatted_result)
运行后就能得到你想要的输出:顶层键值对用=分隔,嵌套的Applications内部结构保持原有的:格式。
内容的提问来源于stack exchange,提问作者Martyn Laidler
相关产品推荐
相关产品推荐

