在python中按索引位置对文件排序

2024-04-19 18:00:48 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我想按学号对列表进行排序(下面的示例很小,但列表会比这个大):

  • 斯蒂芬,97654,出生日期:1985年3月5日
  • 凯利,58374,出生日期:1986年12月18日
  • 布莱恩,12587,出生日期:1985年5月20日

    f = open('studentdb.txt') for line in f: g = line.split(',') print(g)

这给了我:

['Stephen', ' 97654', ' DOB: Mar 5', ' 1985\n'] ['Kelly', ' 58374', ' DOB: Dec 18', ' 1986\n'] ['Brian', ' 12587', ' DOB: May 20', ' 1985\n']

我该如何对文件进行排序并按学号重新排序?你知道吗


Tags: intxt示例列表for排序lineopen
2条回答

您可以这样保存列表:

f = open('studentdb.txt')
for line in f:
    g = line.split(',')
    StudentList.append(g)

然后按第二个元素排序:

StudentList.sort(key=lambda x: int(x[1]))

使用csv读取它,然后在第二个字段上排序:

import csv

with open(fn) as f:
    lines=[line for line in csv.reader(f)]
    print lines   # unsorted
    print sorted(lines, key=lambda line: int(line[1]))

首先打印文件:

[['Stephen', ' 97654', ' DOB: Mar 5', ' 1985'], 
 ['Kelly', ' 58374', ' DOB: Dec 18', ' 1986'], 
 ['Brian', ' 12587', ' DOB: May 20', ' 1985']]

然后排序的版本:

[['Brian', ' 12587', ' DOB: May 20', ' 1985'], 
 ['Kelly', ' 58374', ' DOB: Dec 18', ' 1986'], 
 ['Stephen', ' 97654', ' DOB: Mar 5', ' 1985']]

一旦您有了排序的版本,重新打开文件进行写入,并再次使用csv写出文件。你知道吗

相关问题 更多 >