python 读取txt文件中的行、并按日期排序,如何按三列对文本文件进行排序,并按特定顺序对Python中的这些列进行排序?...

How do I sort a text file by three columns with a specific order to those columns in Python?

My text_file is in the following format with whitespaces between columns:

Team_Name Team_Mascot Team_Color Team_Hometown Number_of_Wins Team_Coach

Example:

Bears LittleBear Blue Beartown 15 BigBear

I want to sort it by Team_Color first, Team_Hometown second, and Number_of_Wins third in ascending order.

Therefore the attributes:

Bears Blue Beartown 15 Coach1

Bears Red Dogtown 30 Coach6

Bears Blue Cattown 15 Coach2

Bears Red Beartown 15 Coach4

Bears Blue Cattown 17 Coach3

Bears Red Dogtown 9 Coach5

My expected output is a sorted text file:

Bears Blue Beartown 15 Coach1

Bears Blue Cattown 15 Coach2

Bears Blue Cattown 17 Coach3

Bears Red Beartown 15 Coach4

Bears Red Dogtown 9 Coach5

Bears Red Dogtown 30 Coach6

I have thought about using lambda but none of my values are a tuple

https://docs.python.org/3/tutorial/controlflow.html

I have looked at previous StackOverflow questions but most of them dealt with sorting two columns at maximum using lambda, tuple, or other methods

解决方案

Your question is still ambiguous. Your example doesn't have the first field Team_Name introduced in your header. So the index here is probably off by one, but I think you get the concept:

#read lines of text file and split into words

lines = [line.split() for line in open("test.txt", "r")]

#sort lines for different columns, numbers converted into integers to prevent lexicographical sorting

lines.sort(key = lambda x: (x[1], x[2], int(x[3])))

#writing the sorted list into another file

with open("new_test.txt", "w") as f:

for item in lines:

f.write(" ".join(item) + "\n")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值