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

使用csv.reader+itertools读取txt生成嵌套列表字典返回空字典问题

代码错误点
  • 变量名拼写错误:函数参数传入的是文件路径,但open()里用了不存在的变量filnamn;读取动物名称时调用了不存在的变量rader,应该是rows。
  • 分隔符配置错误:你提供的样例txt中Pig的日期和体重用两个空格分隔,不是制表符\t,但csv.reader指定了delimiter="\t",导致所有行读取后都只有1个元素,itertools.groupby的分组判断len(row) == 1全为True,永远不会进入存储数据的else分支,最终返回空字典。
  • 变量命名冲突:函数参数名和with open语句里的文件对象都叫file,会覆盖传入的文件路径参数。
  • 未处理缺失体重的行:Bear对应的行只有日期没有体重,原始代码会直接把单行字符串存进去,不符合你要求的[日期, 体重]格式。
  • 逻辑漏洞:如果最后一组是动物名称没有对应数据,或者del animal后下一组还没赋值新的动物名,会触发变量未定义报错。
修正后可用代码
def readanimal(file_path):
    animal_map = {}
    current_animal = None
    with open(file_path, encoding="utf-8") as f:
        for line in f:
            line = line.strip()
            # 跳过空行
            if not line:
                continue
            # 没有空格/制表符的行判定为动物名称
            if ' ' not in line and '\t' not in line:
                current_animal = line
                animal_map[current_animal] = []
                continue
            # 拆分日期和体重,自动适配空格/制表符分隔
            parts = line.split()
            date = parts[0]
            weight = parts[1] if len(parts) >= 2 else None
            animal_map[current_animal].append([date, weight])
    return animal_map

运行print(readanimal("filename.txt"))即可返回你需要的格式字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:15:04