如果我想按学生编号对列表进行排序(下面的小样本但列表大于此值):
Brian,12587,DOB: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']
我如何分类文件并按学生编号重新排序?
答案 0 :(得分:3)
使用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写出文件。
答案 1 :(得分:0)
您可以保存这样的列表列表:
f = open('studentdb.txt')
for line in f:
g = line.split(',')
StudentList.append(g)
然后用第二个元素排序:
StudentList.sort(key=lambda x: int(x[1]))