使用Python对CSV文件进行排序并输出

csv文件排序输出

类型:文件处理

描述

读入grade0.csv文件,按照要求对第i列升序排列后输出。(提示:可以使用语句fo=open('grade0.csv','r',encoding='UTF-8')来打开文件。)
Grade0.csv文件的内容形如下图:

输入格式

输入为一个数正整数 i,要求根据 grade0.csv 文件的第 i 列值升序排列后输出文件中的数据,当第 i 列数据值相同时,按第 1 列数据的值辅助排序(测试数据保证为正整数且不超过数据列数)。

输出格式:

按行输出排序后的信息,数据列之间用tab(‘\t’)分隔,最后一列后面没有空格。

示例 1

输入:

4

输出:

20170101 章阳 Male A
20170102 徐芳 Female A
20170112 胡瑞欣 Female A
20170113 田益宾 Male A
20170115 张铭武 Male A
20170106 周思云 Female B
20170109 刘春燕 Female B
20170110 刘兴怡 Female B

参考答案

def csv_to_lst(filename):
	"""接收文件名为参数,读取数据到二维列表中,返回二维列表。形如
	[['20170101', '章阳', 'Male', 'A'],... ['20170108', '刘忆宁', 'Male', 'E']]
	"""
	with open(filename, 'r', encoding='UTF-8') as f:
		grade_in_lst = [line.strip().split(',') for line in f]  # 逐行切分为列表,得到二维列表
	return grade_in_lst


def sort_lst(list_name, n):
	"""接收需要排序的二维列表名和整数的排序列序号(范围为:1,2,3,4)为参数,返回排序后的二维列表。"""
	list_name.sort(key=lambda x: x[n - 1])  # 列序号从1开始,列表中的序列从0开始,排序依据用x[n - 1]
	return list_name                        # 返回排序后的列表


def output(ls):
	"""接收排序后的二维列表为参数,逐行输出,每行的元素间用制表符分隔。"""
	for line in ls:             # line 为子列表
		print(*line, sep='\t')  # *对子列表进行解包,得到多个元素,sep指定分隔符


if __name__ == '__main__':
	file = 'grade0.csv'
	num = int(input())
	grade_list = csv_to_lst(file)
	ls_in_sort = sort_lst(grade_list, num)
	output(ls_in_sort)

作者:m0_62488776

物联沃分享整理
物联沃-IOTWORD物联网 » 使用Python对CSV文件进行排序并输出

发表回复