Python如何将字典数组写入JSON文件且每个字典单独占一行
问题原因
Python标准库的json模块的indent参数是全局生效的,只要设置该参数,所有嵌套结构都会被展开换行,没有单独控制「仅数组层级换行、对象内部保持单行」的配置,所以你用indent会得到字典内部键值对也拆分的结果。
解决方案
你可以手动拼接JSON内容,不需要额外安装第三方依赖,生成的格式完全符合预期:
import json def save_summary(data, file_path): # 将每个字典转成无缩进的合法JSON字符串,统一添加前置缩进 line_items = [f" {json.dumps(item, ensure_ascii=False)}" for item in data] # 拼接数组括号、换行和逗号 full_content = "[\n" + ",\n".join(line_items) + "\n]" # 写入文件 with open(file_path, "w", encoding="utf-8") as outfile: outfile.write(full_content) # 注意之前存储返回结果的变量名为result,调用时不要写错变量名 save_summary(result, "apartment_summary.json")
原有代码的其他小问题
- 你定义
save_summary时第二个参数传入了文件名,但函数内部硬编码了写入路径'apartment_summary.json',传参没有生效,上面的修正代码已改为使用传入的文件路径参数。 - 你调用时写的
save_summary(results, ...)里的results变量名和之前存储返回值的result不一致,运行会报未定义错误,调用时注意变量名对应。
内容的提问来源于stack exchange,提问作者supercar lover
相关产品推荐
相关产品推荐

