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

如何将JSON文件中所有字母转为小写?现有Python代码运行无效果

问题原因
  • 你将读取到的原始JSON数据存在data变量后,全程操作的是空字典new_data,没有关联到原始数据,自然不会产生任何效果
  • 目标JSON是多层嵌套结构,现有逻辑只处理了一级键值对,嵌套在内部的字符串完全没有被处理到
  • 没有判断非字符串类型,比如实体标注里的数字坐标直接调用lower()会触发报错
修正后代码
import json

# 递归处理所有层级的字符串转小写
def to_lower(node):
    if isinstance(node, str):
        return node.lower()
    elif isinstance(node, list):
        return [to_lower(item) for item in node]
    elif isinstance(node, dict):
        return {to_lower(k): to_lower(v) for k, v in node.items()}
    # 数字、布尔等其他类型直接返回
    else:
        return node

if __name__ == "__main__":
    with open("data.json", "r", encoding="utf-8") as f:
        data = json.load(f)
    new_data = to_lower(data)
    with open("data.json", "w", encoding="utf-8") as f:
        json.dump(new_data, f, ensure_ascii=False, indent=2)

这段代码通过递归遍历JSON的所有节点,只会对字符串类型做小写转换,数字、布尔等其他类型保持原值,兼容任意嵌套深度的JSON结构,执行后会直接覆盖原文件的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:57:00