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

加载JSON文件判断list_no存在性时报错TypeError,求修复方案

解决TypeError并实现JSON中list_no的校验逻辑

报错原因

你遇到的TypeError: list indices must be integers or slices, not str,是因为data['results']对应的是**列表(list)**而非字典(dict)。列表只能用整数索引或切片访问,用字符串'list_no'去索引自然会报错。

修正后的代码

结合你的需求(不存在list_no或内容不符合要求则终止脚本),以下是修正并完善后的代码:

import sys
import json

# 加载JSON文件
with open('C:/ftpfiles/itemdatasku.json') as json_file:
    data = json.load(json_file)

try:
    # 从data中取出results列表(根据你的JSON结构,若results是单个元素列表则取索引0,按需调整)
    results_list = data['results']
    # 假设results列表中第一个元素包含list_no字段,根据实际JSON结构修改索引
    target_item = results_list[0]
    
    # 获取list_no并校验内容
    list_no = target_item['list_no']
    # 这里替换成你实际的校验规则,示例:检查是否为非空字符串
    if not isinstance(list_no, str) or not list_no.strip():
        print("list_no内容不符合要求")
        sys.exit()

    # 到这里说明list_no存在且符合要求,执行后续代码
    print("list_no校验通过,继续执行")
    # --- 后续业务代码写在这里 ---

except KeyError as err:
    print(f"缺失必要字段: {err}")
    sys.exit()
except IndexError:
    print("results列表为空或索引超出范围")
    sys.exit()
except TypeError as err:
    print(f"数据类型错误: {err}")
    sys.exit()

关键修复点

  1. 处理列表类型的results:先取出data['results']列表,再通过整数索引获取包含list_no的元素(如果你的JSON中results是多元素列表,可改为遍历检查)。
  2. 补充内容校验:新增了对list_no内容的校验逻辑,你可以根据需求修改(比如检查格式、长度、数值范围等)。
  3. 修复无效代码:原代码中sys.exit()后的print("not exists")永远不会执行,因为sys.exit()会直接终止脚本,现在将提示打印放在sys.exit()之前。
  4. 完善异常捕获:新增了IndexError(处理列表为空或索引越界)和通用TypeError的捕获,避免脚本因意外情况崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:33:29