将行索引给txt文档排序,然后合并多个txt文件

本文以60名学生的两门课程成绩的数据文件(文件名分别为ReportCard1.txt和ReportCard2.txt)为例,分别记录着学生的学号、性别以及不同课程的成绩。

由于两个txt文档中学生的编号顺序打乱的,所以先将其按行索引排序: 

sorted_files=''.join(sorted(open('E:/python学习笔记/代码和数据/学生成绩/ReportCard1.txt'), key=lambda s: s.split()[0],reverse=1))
open(r"E:/python学习笔记/代码和数据/sort_ReportCard1.txt", 'w').write("".join(sorted_files))


sorted_files=''.join(sorted(open('E:/python学习笔记/代码和数据/学生成绩/ReportCard2.txt'), key=lambda s: s.split()[0],reverse=1))
open(r"E:/python学习笔记/代码和数据/sort_ReportCard2.txt", 'w').write("".join(sorted_files))

代码说明:

join()函数语法: 'sep'.join(seq)   参数说明:sep:分隔符。可以为空 seq:要连接的元素序列、字符串、元组、字典,上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串  ;返回值:返回一个以分隔符sep连接各个元素后生成的字符串

sorted(iterable, cmp=None, key=None, reverse=False) :iterable 为要排序的对象,key是指定按照对象中的某一列来进行排序,这里即是第一列;reverse=1降序;需要注意的是sorted会返回一个新序列。

f.write()把排序后的序列写入新的txt文件中

 排序之后,将其合并(若两个txt文件列索引顺序是一样的,则可以用下面的代码直接合并):

import os,sys
# 按行合并 两个txt文件   ###################################两个文件列索引的顺序相同
# 打开所需要合并的两个txt文件
file1path = 'E:/python学习笔记/代码和数据/sort_ReportCard1.txt '
file2path = 'E:/python学习笔记/代码和数据/sort_ReportCard2.txt'
 
file_1 = open(file1path, 'r', encoding='utf-8')
file_2 = open(file2path, 'r', encoding='utf-8')
 
list1 = []
for line in file_1.readlines():
    ss = line.strip()
    list1.append(ss)
file_1.close()
 
list2 = []
for line in file_2.readlines():
    ss = line.strip()
    list2.append(ss)
file_2.close()
 
# 创建新的txt文件,用来保存,
file_new = open('E:/python学习笔记/代码和数据/result2.txt', 'w', encoding='utf-8')
for i in range(len(list1)):
    # 将两个txt文件合并到一行 中间用分隔符隔开
    sline = list1[i] + '\t' + list2[i]
    # 写入新的txt文件 换行
    file_new.write(sline+'\n')
file_new.close()

f.read,f.readline,f.readlines:

f.read:一个一个读取txt文档中的元素;f.readlines按行读取;f.readline()只读取第一行

line.strip():删除读进去行的开头、结尾的空格

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值