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

如何将含多个JSON的temp.txt文本文件加载到Python中?

问题分析与解决办法

报错原因

  1. 文件格式不合法:你的temp.txt里是多个独立JSON对象直接并列,而标准JSON要求要么是单个对象,要么是用数组[]包裹所有对象、对象间用逗号分隔。这种非标准的并列格式直接解析必然出错。
  2. 代码用法错误:json.load()是用来读取整个文件对象的方法,你循环读取单行后用json.load(line)完全误用——处理字符串应该用json.loads(),但更核心的问题是:单行内容根本不是完整的JSON对象,逐行解析逻辑本身就不成立。

解决办法

办法1:将文件改为标准JSON格式

把temp.txt修改为数组包裹的合法格式,示例如下:

[
  {
    "names" : [{"index" : 0, "cards": "\n\nbingo" } ],
    "more stuff": ""
  },
  {
    "names" : [{"index" : 0, "cards": "\nfalse" } ],
    "more stuff": ""
  }
]

然后用以下代码读取:

import json

def read_op(filename):
    with open(filename, 'r') as file:
        data = json.load(file)
    return data

# 调用示例
result = read_op("temp.txt")
for item in result:
    print(item)

办法2:不修改原文件,直接解析多个独立JSON对象

如果无法修改原文件,可以读取整个文件内容,分割出单个JSON对象后逐个解析:

import json

def read_op(filename):
    with open(filename, 'r') as file:
        content = file.read()
    # 按独立JSON对象的分隔符拆分内容
    json_fragments = content.split('}\n{')
    # 补全每个片段的括号,使其成为完整JSON对象
    json_fragments[0] = json_fragments[0] + '}'
    for i in range(1, len(json_fragments)-1):
        json_fragments[i] = '{' + json_fragments[i] + '}'
    json_fragments[-1] = '{' + json_fragments[-1]
    # 逐个解析并收集结果
    parsed_data = []
    for fragment in json_fragments:
        try:
            parsed_data.append(json.loads(fragment))
        except json.JSONDecodeError as e:
            print(f"解析片段失败: {e}")
    return parsed_data

# 调用示例
result = read_op("temp.txt")
for item in result:
    print(item)

注:这种分割方式依赖于文件中每个JSON对象以}\n{分隔,如果文件存在其他换行或括号嵌套情况,可能需要调整为正则匹配完整JSON对象的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:30:53