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

如何按每组首行对文本文件多行条目字母排序并保留关联信息

按4行一组的首行排序并保持组内信息完整的Python实现

需求说明

文本文件中每4行对应一位人员的完整信息(姓名、电话号码、邮箱地址、住址),需按姓名行进行字母排序,同时保留每位人员的关联信息不拆分。

原文件内容

Bob Steven
02847661723
Bob@mail.com
Bob Street 121
Alex Ericsson
1233213211
Alex@mail.com
Alex Street 112
Chris Philips
018207129387
Chris@mail.com
Christ Street 902

期望排序后内容

Alex Ericsson
1233213211
Alex@mail.com
Alex Street 112
Bob Steven
02847661723
Bob@mail.com
Bob Street 121
Chris Philips
018207129387
Chris@mail.com
Christ Street 902

现有代码问题

现有代码将每一行单独读取并排序,破坏了人员信息的组结构,无法实现需求。

input_filename = "filename.txt"
output_filename = "filename.txt"

with open(input_filename, "r") as f:
    l = [line for line in f if line.strip()]

l.sort(key=lambda line: line.split())

with open(output_filename, "w") as f:
    for line in l:
        f.write(line)

修改后的代码实现

input_filename = "filename.txt"
output_filename = "filename.txt"

# 读取所有行,保留原始换行符
with open(input_filename, "r") as f:
    lines = f.readlines()

# 将每4行作为一个人员信息组
groups = [lines[i:i+4] for i in range(0, len(lines), 4)]

# 按每组的首行(姓名)进行字母排序
groups.sort(key=lambda group: group[0].strip())

# 将排序后的组写入文件
with open(output_filename, "w") as f:
    for group in groups:
        f.writelines(group)

代码说明

  1. 读取所有行:使用readlines()保留每行的原始换行符,避免后续写入时格式混乱。
  2. 分组处理:通过列表推导式按步长4对行进行分组,确保每组对应一位人员的完整信息。
  3. 按姓名排序:排序时以每组的第一行(姓名)为依据,使用strip()去除首尾空白后再比较,避免换行符影响排序结果。
  4. 写入文件:遍历排序后的组,使用writelines()将每组的4行一次性写入文件,保持组内信息完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:15:40