如何用字典创建JSON文件并存储ndJson处理后的多条数据?
解决ndJSON处理后仅保留最后一条数据的问题
你的问题出在两个核心点:
- 每次循环都用
open('p.json', 'w')打开文件,'w'模式会清空并覆盖原有文件内容,循环结束后自然只留下最后一次写入的数据。 - 直接打印字典对象到文件,得到的是Python字典的字符串表示(比如带单引号),并非标准JSON格式。
要实现每行一个JSON的ndJSON格式输出,按以下方式修改代码即可:
import json # 读取源ndJSON文件,过滤空行避免解析报错 with open(r"C:\Users\Lalith K\Downloads\ENUMtransactions.json", 'r') as f: data = [json.loads(line) for line in f if line.strip()] # 循环外打开输出文件,避免重复截断内容 with open('p.json', 'w') as outfile: for idx, item in enumerate(data): if idx % 2 == 0: # 将Python字典转为标准JSON字符串 json_str = json.dumps(item) # 写入文件并添加换行符,保证每行一条JSON outfile.write(json_str + '\n') # 控制台输出与文件内容完全一致 print(json_str)
关键改动说明:
- 将输出文件的
open操作移到循环外部,用'w'模式一次性打开,避免每次循环都清空文件。 - 使用
json.dumps()把字典转换为符合JSON规范的字符串,确保文件内容是标准可解析的JSON格式。 - 写入时手动添加换行符
\n,保证每条JSON单独占一行,和控制台输出格式匹配。 - 用
enumerate替代range(len(data)),更简洁地获取索引和对应元素。
处理完成后,p.json会包含所有符合条件的JSON数据,每行一条,和控制台打印的内容完全一致。
内容的提问来源于stack exchange,提问作者Lalit Kumar Singh
相关产品推荐
相关产品推荐

