1.场景
在很久很久以前,有一个乞丐。
他乞讨到这样一个文件q1.txt:
他有强迫症,想按第2列从高到低排序,效果如a1.txt:
我们来帮他实现。
2.代码
python版本:v3.7.3
用法: python sortText.py q1.txt a1.txt
#sortText.py
#2020.03.09
import sys
def sort_text(in_file, out_file):
#用列表解析一次性将文件所有内容读入,文件大于1GB时最好不要这么做
#文件最好使用utf-8读取和写入
in_lines = [line for line in open(in_file, "r", encoding="utf-8")]
#排序,按照key排序,key=第2列字符串,转化为int,reverse=True降序
out_lines = sorted(in_lines, key=lambda line:(int(line.split("\t")[1])), reverse=True)
#直接写入list
with open(out_file, "w", encoding="utf-8") as fw:
fw.writelines(out_lines)
if __name__ == "__main__":
#从控制台cmd接收参数列表
args = sys.argv
in_file = args[1]
out_file = args[2]
sort_text(in_file, out_file)
3.讨论
乞丐: list.sort()
和sorted(list)
有什么区别?
作者:
前者直接改变list本身,不会生成新的对象,返回值为None
举例:a = list.sort()
,则a=None
后者不会改变list本身,而是生成新的对象,需要有对象接收返回值
举例:b = list.sort()
,则b是有值的
乞丐:lambda line:(int(line.split("\t")[1]))
怎么理解?
作者:
lambda为匿名函数的标记
可以理解成这样一个函数:def <lambda> (line): return int(line.split("\t")[1])