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

如何将数组内容逐行写入文本文件?修正代码换行逻辑错误

问题根因

原代码运行后第一行出现两个姓名,是两处错误共同导致的:

  • 换行逻辑颠倒:首行写入姓名后没有追加换行,第二个姓名写入时会直接拼接在首行内容末尾,直接造成两个名字同处一行
  • 变量名笔误:判断最后一个元素位置时引用了未定义的names变量,实际存储申请人的列表名是applicants,代码运行时会直接抛出NameError
  • 额外冗余:手动维护index计数器的写法没有必要,徒增逻辑出错的可能
修正实现

不需要拆分首行、中间行、尾行做复杂判断,以下两种写法都可以稳定实现每行一个姓名的存储要求:

推荐简洁写法

遍历排序后的列表,每个姓名后拼接换行符写入即可。文件末尾保留换行是通用文本存储规范,完全不影响姓名逐行展示的效果:

applicants = ["Timothy", "David", "Mary", "Drew", "Titus", "Samuel", "Avery"]
applicants.sort()

# 使用上下文管理器自动处理文件关闭,避免资源泄漏
with open("admitted_staff.txt", "w", encoding="utf-8") as f:
    for name in applicants:
        f.write(f"{name}\n")

无末尾换行写法

如果明确要求文件最后一行不能带多余换行,可以直接用字符串join方法一次性拼接所有内容,姓名之间用换行符分隔后一次写入,不需要循环判断:

applicants = ["Timothy", "David", "Mary", "Drew", "Titus", "Samuel", "Avery"]
applicants.sort()

with open("admitted_staff.txt", "w", encoding="utf-8") as f:
    f.write("\n".join(applicants))

原结构最小修改版

如果要保留你原本写的index计数循环结构,只需要调整换行符的位置——非首行内容前加换行,而非中间行内容后加换行,同时修正变量名笔误即可:

applicants = ["Timothy", "David", "Mary", "Drew", "Titus", "Samuel", "Avery"]
applicants.sort()
index = 0

with open("admitted_staff.txt", "w", encoding="utf-8") as file:
    for el in applicants:
        if index == 0:
            file.write(el)
            index += 1
        else:
            # 非首行先写换行,再写当前姓名,就不会和上一行内容拼接
            file.write(f"\n{el}")
            index += 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:54:23