You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python递归遍历JSON并修剪字符串:求去除多余空格的完整实现

去除JSON字符串首尾空格的完整实现方案

完整代码实现

import json

def trim_json_strings(data):
    # 单个值的处理逻辑
    def process_value(value):
        if isinstance(value, str):
            return value.strip()
        elif isinstance(value, dict):
            return trim_json_strings(value)
        # 非字符串、非字典的类型(如数字、布尔值)直接返回
        return value
    
    # 遍历所有键值对,返回处理后的新字典
    return {key: process_value(value) for key, value in data.items()}

# 你的输入JSON字符串
input_json = '''{"main": "test   ","title": {"title":  "something. ","textColor": "Dark"},"background": {"color":  "White  "}}'''

# 步骤1:将JSON字符串解析为Python字典
parsed_dict = json.loads(input_json)

# 步骤2:递归去除所有字符串首尾空格
trimmed_dict = trim_json_strings(parsed_dict)

# 步骤3:将处理后的字典转回JSON字符串
output_json = json.dumps(trimmed_dict)

# 输出结果
print(output_json)

原代码存在的问题

你的递归函数仅做了键值对打印,没有修改原字典或生成新的结构化数据,因此无法得到可输出的目标JSON。核心问题是:

  • 没有保存递归处理后的子字典结果
  • 未构建完整的处理后字典结构,仅输出零散的键值

实现逻辑说明

  1. JSON与Python字典互转:使用json.loads()将输入JSON转为Python字典(方便操作),处理完成后用json.dumps()转回JSON字符串。
  2. 递归处理逻辑:
    • 对每个值判断类型:字符串则执行strip()去除首尾空格;字典则递归调用处理函数;其他类型(如数字、布尔值)保持原样。
    • 用字典推导式生成新字典,避免修改原始输入数据。
  3. 结果输出:处理后的字典转为JSON字符串后,就是你需要的去除多余空格的目标JSON。

运行上述代码后,输出结果为:

{"main": "test","title": {"title": "something.","textColor": "Dark"},"background": {"color": "White"}}

内容的提问来源于stack exchange,提问作者sadat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:35:23