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

如何从文本文件指定位置读取?联系人列表应用删除功能咨询

解决方案:读取指定行与删除联系人功能实现

一、读取文本文件的指定行范围

针对读取第14到18行的需求,这里提供两种Python实现方案:

1. 逐行遍历定位(适合小文件)

直接遍历文件,记录行号,锁定目标范围后读取内容,超出范围就停止遍历提升效率:

start_line = 14
end_line = 18
target_lines = []

with open("contacts.txt", "r", encoding="utf-8") as f:
    # 用enumerate从1开始计数行号,符合日常行号习惯
    for line_num, line in enumerate(f, start=1):
        if start_line <= line_num <= end_line:
            target_lines.append(line.strip())
        elif line_num > end_line:
            break

print(target_lines)

2. 使用linecache模块(适合频繁读取指定行)

Python内置的linecache模块可以直接获取指定行,无需手动遍历,适合需要多次读取不同行的场景:

import linecache

start_line = 14
end_line = 18
target_lines = []

for line_num in range(start_line, end_line + 1):
    # getline方法直接返回指定行内容,strip()去除换行和空白
    line = linecache.getline("contacts.txt", line_num).strip()
    target_lines.append(line)

print(target_lines)

二、删除指定姓名的联系人(姓名+后续4行)

你的联系人格式是姓名占1行,后续4行是电话、地址等信息,所以删除逻辑是找到目标姓名所在行,跳过该行及后续4行,把剩余内容重新写入文件:

def delete_contact(target_name):
    # 先读取文件所有内容到列表
    with open("contacts.txt", "r", encoding="utf-8") as f:
        lines = f.readlines()
    
    new_lines = []
    i = 0
    while i < len(lines):
        # 去除行首尾空白后匹配目标姓名
        if lines[i].strip() == target_name:
            # 跳过当前行+后续4行,总共5行
            i += 5
        else:
            new_lines.append(lines[i])
            i += 1
    
    # 将过滤后的内容写回原文件
    with open("contacts.txt", "w", encoding="utf-8") as f:
        f.writelines(new_lines)

# 调用示例:删除名为"张三"的联系人
delete_contact("张三")

关键注意点

  • 重名处理:如果有多个同名联系人,上面的代码会删除所有匹配项。要是需要精确删除,可让用户补充电话等额外信息辅助定位。
  • 数据安全:操作文件前建议备份原文件,比如复制一份contacts.txt到contacts_backup.txt,避免误删数据。
  • 编码问题:打开文件时指定encoding="utf-8",防止中文姓名或地址出现乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:50:42