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

Python列表嵌套添加换行符报错及文件写入格式修复咨询

任务列表写入文件的索引错误修复与格式优化

错误原因分析

你代码里的for i in list_of_tasks循环中,i是每个任务的子列表元素(比如["Bob", "Finish report", "...", "Yes"]),而非整数索引。当你执行list_of_tasks[i][-1]时,相当于用列表作为索引去访问另一个列表,Python会抛出TypeError,因为列表索引只能是整数或切片类型。

修正方案

方案1:用enumerate获取索引与元素

通过enumerate同时拿到任务的索引和内容,判断是否为最后一个任务:

with open('tasks.txt', 'w') as f2:
    total_tasks = len(list_of_tasks)
    for idx, task in enumerate(list_of_tasks):
        task_str = ", ".join(task)
        if idx == total_tasks - 1:
            # 给最后一个任务的最后字段添加换行
            task[-1] = f"{task[-1]}\n"
            f2.write(", ".join(task))
        else:
            # 其他任务写完后加换行,保证每行一个任务
            f2.write(task_str + "\n")

方案2:更简洁的写入逻辑(推荐)

不需要修改任务列表,直接在写入时给每个任务字符串添加换行,确保文件每行对应一个任务,从根源解决格式混乱问题:

with open('tasks.txt', 'w') as f2:
    for task in list_of_tasks:
        # 每个任务拼接后加换行,保证文件格式清晰
        f2.write(", ".join(task) + "\n")

这种写法更简洁,且最后一行的换行不会影响后续文件读取(多数解析逻辑会忽略末尾空白行)。

方案3:单独处理最后一行

如果必须给最后一个任务的最后字段加换行而非整个行尾,可单独提取最后一行处理:

with open('tasks.txt', 'w') as f2:
    # 写入除最后一行外的所有任务
    for task in list_of_tasks[:-1]:
        f2.write(", ".join(task) + "\n")
    # 处理最后一行(避免空列表报错)
    if list_of_tasks:
        last_task = list_of_tasks[-1]
        last_task[-1] = f"{last_task[-1]}\n"
        f2.write(", ".join(last_task))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:40:47